2013-06-26 2 views
1

일부 데스크톱 응용 프로그램에는 https://github.com/akrinke/Font-Stash.git을 사용했습니다. 이제 gles2를 사용하는 나무 딸기 파이에 사용하고 싶습니다. 정점 SLOpenGL에서 GLES 2.0 포트

glBindTexture(GL_TEXTURE_2D, texture->id); 
glEnable(GL_TEXTURE_2D); 
GLint position_index = get_attrib(stash->program, "position"); 
glEnableVertexAttribArray(position_index); 
glVertexAttribPointer (position_index, 2, GL_FLOAT, GL_FALSE, VERT_STRIDE, texture->verts); 
GLint texture_coord_index = get_attrib(stash->program, "texCoord"); 
glEnableVertexAttribArray(texture_coord_index); 
glVertexAttribPointer (texture_coord_index, 2, GL_FLOAT, GL_FALSE, VERT_STRIDE, texture->verts + 2); 
GLint texture_index = get_uniform(stash->program, "texture"); 
glUniform1i(texture_index, 0); 
glDrawArrays(GL_TRIANGLES, 0, texture->nverts); 
glDisable(GL_TEXTURE_2D); 

:

glBindTexture(GL_TEXTURE_2D, texture->id); 
glEnable(GL_TEXTURE_2D); 
glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glVertexPointer(2, GL_FLOAT, VERT_STRIDE, texture->verts); 
glTexCoordPointer(2, GL_FLOAT, VERT_STRIDE, texture->verts+2); 
glDrawArrays(GL_TRIANGLES, 0, texture->nverts); 
glDisable(GL_TEXTURE_2D); 
glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 

내가 여기에 GLES하는 포트에 노력하고있어 : flush_draw 기능 내가 코드에 고개 GLES에서 작동하지 않는 유일한 경로를 볼 수 있습니다

attribute vec4 position; 
attribute vec2 texCoord; 
varying vec2 texCoordVar; 
void main() { 
    gl_Position = position; 
    texCoordVar = texCoord; 
} 

및 단편 SL

precision mediump float;  // set default precision for floats to medium 
uniform sampler2D texture;  // shader texture uniform 
varying vec2 texCoordVar;  // fragment texture coordinate varying 
void main() { 
    // sample the texture at the interpolated texture coordinate 
    // and write it to gl_FragColor 
    gl_FragColor = texture2D(texture, texCoordVar); 
} 

하지만 화면에 아무것도 표시되지 않습니다.

아무도 내 코드의 문제점을 보여줄 수 있습니까?

+0

ES 2.0에서 작동하지 않는 유일한 기능입니까? 당신이 제공 한 repos에서 main.c를 볼 때'glMatrixMode (...)','glLoadIdentity()'그리고'glOrtho (...)'호출을 볼 수 있기 때문에, GLES 2.0. – Reigertje

답변

1

버텍스 쉐이더에서 변환을 설정해야합니다. 고정 된 기능을 포팅하는 가장 좋은 방법 OpenGL 앱은 고정 파이프 라인을 복제하여 정점으로 설정된 정점 및 픽셀 쉐이더를 작성하고 변환이 변경 될 때마다 해당 유니폼을 설정하는 것입니다.

0

glEnable (GL_TEXTURE_2D), 유효하지 않습니다 GLES2 btw. 또한 꼭지점 셰이더의 위치를 ​​조작하지 않기 때문에 좌표가 절두체 내에 있어야하고 좌표계가 래스터 라이저로 전달되는 것이 보장되지 않는 한 좌표를 래스터 라이저로 전달하는 것이 아니라면 그들은 절두체에서 끝나지 않습니다. 고정 함수 파이프가 변형에 대해 처리하는 데 사용 된 모든 것을 설명 했습니까?

관련 문제