我有一个关于类型兼容性的问题-检查这个例子:
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 ES2.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*)'Android es2.0应该在移动设备上运行,所以我正在尝试编译和运行OpenGL Native C++的代码示例。
有人知道这本书中提供的代码是否有很多bug吗?或者我做了什么完全错误的事情?如何解决这个贯穿全书的常量转换问题?
我们非常欢迎所有的评论。
发布于 2012-03-01 00:48:33
const char* vShaderStr[]是一个指针数组。请改用const char vShaderStr[]
https://stackoverflow.com/questions/9503145
复制相似问题