에 대한 쉐이더 포인터는이 데이터 구조입니다 :안드로이드 OGLES 2 : 나는 OGLES 2.</p> <p>에 쉐이더에 프로그램을 업그레이드하는 데 문제가 색
namespace packt {
class GraphicsService {
public:
...
struct ESMatrix{ GLfloat m[4][4]; };
typedef struct
{ // Handle to a program object
GLuint programObject;
// Attribute locations
GLint positionLoc;
// Uniform locations
GLint mvpLoc;
// Vertex data
GLfloat *vertices;
GLuint *indices;
int numIndices;
// Rotation angle
GLfloat angle;
// MVP matrix
ESMatrix mvpMatrix;
} UserData;
...
}
}
에서 android_main 컨텍스트가 설정됩니다
packt::GraphicsService lGraphicsService(pApplication,&lTimeService);
packt::Context lContext = { &lGraphicsService, &lTimeService };
그러나 그 대신 OGLES 2의 일부가 아닌 glColor4f를 사용하는, 지금 우리는 쉐이더하여 해당 명령을 대체하기 위해 노력하고 있습니다. 여기가 설정 방법에가는 방법입니다
다음과 같은 컴파일러의 메시지 제공void GraphicsService::setup() {
glEnable(GL_TEXTURE_2D);
GLbyte vShaderStr[] =
"uniform mat4 u_mvpMatrix; \n"
"attribute vec4 a_position; \n"
"void main() \n"
"{ \n"
" gl_Position = u_mvpMatrix * a_position; \n"
"} \n";
GLbyte fShaderStr[] =
"precision mediump float; \n"
"void main() \n"
"{ \n"
" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); \n"
"} \n";
// Load the shaders and get a linked program object
// replaced :: //glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
UserData *userData = mContext->userData;
userData->programObject = esLoadProgram (vShaderStr, fShaderStr);
glDisable(GL_DEPTH_TEST);
}
:
error: UserData *userData = mContext->userData;
- 'void*' is not a pointer-to-object type
error: userData->programObject = esLoadProgram (vShaderStr, fShaderStr);
- invalid conversion from 'GLbyte*' to 'const char*'
- initializing argument 1 of 'GLuint esLoadProgram(const char*, const char*)'
- initializing argument 2 of 'GLuint esLoadProgram(const char*, const char*)'
어떤 제안을 어떻게 그것을 해결하기 위해? 모든 의견은 높이 평가됩니다. 컨텍스트 객체
이