Android OpenGL: преобразование GLbyte LoadShader - PullRequest
0 голосов
/ 29 февраля 2012

У меня проблема с совместимостью типов - проверьте этот пример:

 GLbyte vShaderStr[] =
  "attribute vec4 vPosition;    \n"
  "void main()                  \n"
  "{                            \n"
  "   gl_Position = vPosition;  \n"
  "}                            \n";

 vertexShader = LoadShader ( GL_VERTEX_SHADER, vShaderStr );

LoadShader принадлежит esUtil.h http://code.google.com/p/angleproject/source/browse/trunk/samples/gles2_book/Common/esUtil.h, а код является оригиналом из той же книги OpenGL ES 2.0 Руководство по программированию.

которые дают следующее сообщение:

error: vertexShader = LoadShader(GL_VERTEX_SHADER, vShaderStr);
       Multiple markers at this line
   - initializing argument 2 of 'GLuint LoadShader(GLenum, const char*)'
   - invalid conversion from 'GLbyte*' to 'const char*'

Кто-то может пролить некоторый свет ... как решить эту проблему с помощью 'GLbyte *' до 'const char *'.

Если я просто попытаюсь не использовать GLbyte и вместо этого объявлю:

const char* vShaderStr[] ={...};

Ошибка изменяется для:

cannot convert 'const char**' to 'const char*' for... 
   ...argument '2' to 'GLuint LoadShader(GLenum, const char*)'

OpenGL ES 2.0 должен работать на мобильных устройствах, поэтому я пытаюсь скомпилировать и запустить примеры кода для Android Native C ++.

Кто-нибудь знает, содержит ли код, приведенный в этой книге, много ошибок? Или я что-то не так делаю? Как решить эту проблему преобразования, которая является постоянной на протяжении всей книги?

Все комментарии приветствуются.

1 Ответ

2 голосов
/ 29 февраля 2012

const char* vShaderStr[] - это массив указателей. Используйте const char vShaderStr[] вместо

...