Что находится “в” и OpenGL-ES? (Портирование от OpenGL)

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

18
задан genpfault 7 February 2012 в 14:36
поделиться

2 ответа

"OpenGL ES 1.1.12 Спецификации Различия" (PDF), связанный с от OpenGL ES 1. X информационных страниц по Khronos.org проходят различия между OpenGL ES 1. X и OpenGL 1.5. OpenGL ES 1.1 является версией, используемой на iPhone.

спецификация различия не является самым простым документом, который я когда-либо видел, но это - более легкое чтение, чем спецификации OpenGL в целом. Я рекомендую получить список функций OpenGL, которые Вы вызываете и затем поиск документа различия для них. Это покажет Вам, если они будут поддерживаться в OpenGL ES, и если поддержка только неравнодушна, можно перейти к полной спецификации для получения дополнительной информации.

13
ответ дан 30 November 2019 в 08:22
поделиться

Часть проблемы в ответе на Ваш вопрос существует много вещей пропавшие без вести, и часто это - ряд редко используемых или неприменимых битовых флагов. Лучший документ, описывающий различия, является на самом деле заголовками реализации.

Для платформы я продолжаю работать, я решил сделать ее абсолютно кросс-платформенной между рабочим столом и iPhone. Подход, который я проявляю в понимании его, пишут код в OpenGL и видят, где это повреждается. Затем посмотрите в

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/ System/Library/Frameworks/OpenGLES.framework/Headers/ES1/gl.h

и сравните его с

/Developer/SDKs/MacOSX10.5.sdk/ System/Library/Frameworks/OpenGL.framework/Versions/A/Headers/gl.h

, Эти заголовки очень просты и легки следовать.

основное различие, которое я обнаружил до сих пор, нет никакого GLdouble (что-либо с помощью GLdouble, такого как glOrtho и glFrustum имеет версию GLfloat glOrthof и glFrustumf). Также нет никакого gluPerspective или gluPerspectivef по некоторым причинам.

Вот понижение замены:

void gluPerspective( GLfloat fovy, GLfloat aspect, GLfloat zNear, GLfloat zFar )
{
   GLfloat xmin, xmax, ymin, ymax;

   ymax = zNear * tan(fovy * M_PI / 360.0);
   ymin = -ymax;
   xmin = ymin * aspect;
   xmax = ymax * aspect;

   glFrustumf( xmin, xmax, ymin, ymax, zNear, zFar );
}

, Так как у Вас нет glBegin и железы, необходимо сделать все через glDrawArray или (предпочтенный) glDrawElements. Быстрый и грязный пример:

void draw( short x, short y, short w, short h )
{
    const GLshort t[8] = { 0, 0, 1, 0, 1, 1, 0, 1 };
    const GLshort v[8] = { x, y, x+w, y, x+w, y+h, x, y+h };

    glVertexPointer( 2, GL_SHORT, 0, v );
    glEnableClientState( GL_VERTEX_ARRAY );

    glTexCoordPointer( 2, GL_SHORT, 0, t );
    glEnableClientState( GL_TEXTURE_COORD_ARRAY );

    glDrawArrays( GL_TRIANGLE_FAN, 0, 4 );
}

Техническое примечание Apple Выезда TN2230 "Оптимизация OpenGL ES для iPhone OS" для некоторых других подсказок, которые могли быть полезными в портировании.

Портирование до сих пор было справедливо болью, свободной для меня, и если Ваше приложение не сделает некоторых довольно усовершенствованный материал OGL или использует абсолютно неподдерживаемую функциональность, Вы найдете свои проблемы путем нажатия кнопки сборки, и простая фиксация будет очевидна путем рытья немного в gl.h файлах. На самом деле, портируя на вид ES сил Вас для записи хорошего оптимизированного кода рендеринга.

14
ответ дан 30 November 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: