2013-03-04 6 views
0

저는 ES 2.0에서 상당히 새로워졌습니다. OpenGL ES 2.0에서 단일 텍스처를 그리려하고 있습니다.단일 쿼트 텍스처 그리기 OpenGL ES 2.0

데이터 : 텍스처에 대한 포인터 (그것이 작동하고 이미 ES 1.0을 테스트 할 수)

w : 질감 폭

시간 : 질감의 높이 여기

내 코드입니다

텍스처는 256 × 256 픽셀

glGetError의 모든 라인에 GL_NO_ERROR을 반환하지 ...

입니다

누군가가 도와 줄 수 있기를 바랍니다. 내가 볼 수있는 것은 모두 검은 화면입니다!

감사합니다,

현명한

{ {

enum { 
    ATTRIB_VERTEX=0, 
    ATTRIB_TEXTURE_POSITION, 
    NUM_ATTRIB 
}; 


glClearColor (0.0f, 0.0f, 0.0f, 0.0f); 
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

const GLfloat vertices[] = { -0.5f, -0.5f, 0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f }; 
const GLfloat texture_coord[] = { 0.0f, 1.0f,0.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f }; 

GLuint texName; 

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, texName); 


glEnableVertexAttribArray(ATTRIB_VERTEX); 
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, vertices); 

glEnableVertexAttribArray(ATTRIB_TEXTURE_POSITION); 
glVertexAttribPointer(ATTRIB_TEXTURE_POSITION, 2, GL_FLOAT, 0, 0, texture_coord); 

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,w,h, 
       0, GL_RGBA, 
       GL_UNSIGNED_BYTE, data); 


glDrawArrays (GL_TRIANGLES, 0, 4); 
} 

}

답변

0

은 전체 소스 즉 ?? 그렇다면이 작업을 수행해야합니다.하지만이 작업 전에 셰이더를 설정해야합니다.

설정 hadles 핸들

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, texName); 
glUniform1i(maintextureHandle, 0); // add 

또한이 코드를 매번 호출 할 필요가 없습니다를 통해 가치를 제공

ATTRIB_VERTEX = glGetAttribLocation(m_paintProgram, "position"); 
ATTRIB_TEXTURE_POSITION = glGetAttribLocation(m_paintProgram, "inputTextureCoordinate"); 
maintextureHandle= glGetUniformLocation(m_EffectProgram[displayMode], "texture0"); 

, 단지

glActiveTexture(GL_TEXTURE0); 
glBindTexture(GL_TEXTURE_2D, texName); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,w,h,0, GL_RGBA,GL_UNSIGNED_BYTE, data); 

번 전화 사실, 코드에는 Shader load, Shader compile, glUseProgram과 같은 많은 필수 코드가 없습니다.(), glBindFramebuffer(), glviewport(), glBindRenderbuffer 그런 것들. 하지만 나는 그들 모두를 가르 칠 수는 없다. 이 링크를 참조하고 OpenGL es 2.0에 대한 더 많은 정보를 얻길 바란다.

http://examples.oreilly.com/9780596804831/readme.html#WireframeSkeleton