2012-02-29 40 views
0

我對類型兼容性問題 - 檢查該實施例中:的Android的OpenGL:GLbyte LoadShader轉換

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++的代碼示例。

有人知道這本書提供的代碼是否有大量的錯誤?還是我在做一些完全錯誤的事情?如何解決這本書中常見的轉換問題?

非常歡迎所有評論。

回答

2

const char* vShaderStr[]是一個指針數組。用const char vShaderStr[]代替

+0

謝謝湯姆。這解決了問題! – ThreaderSlash 2012-02-29 17:04:35