2012-02-06 2 views
0

OpenGL 사양에서는 모든 변환이 설계에 의해 무시되지만 glDrawTex 에서처럼 텍스처를 그리는 쉬운 방법이 있지만 이전에 행렬로 픽셀을 변환하는 방법이 있습니까?glDrawTex로 그려진 정사각형을 변형하는 방법이 있습니까?

+0

'glDrawTex' 함수가 없습니다. 아마도 당신은 다른 것을 생각하고있을 것입니다. 어떤 기능을 언급하고 있습니까? –

+0

@ NicolBolas : 가장 가능성있는 작성자는 glDrawTexOES 기능을 제공하는 OpenGL ES 용 OES_draw_extension에 대해 이야기하고 있습니다. –

+0

예, 혼란 스럽습니다. – devsnd

답변

0

원하는 위치에서 텍스처를 변환하기 위해 glDrawTex 함수의 x/y/z 인수를 간단히 수정하지 마십시오? 그러나 텍스처를 회전하려면 두 개의 삼각형을 사용하여 텍스처가있는 쿼드를 그립니다. 매우 간단합니다. 가정 당신의 OpenGL ES 버전 1.1이 있습니다

const float v[] = { 
    0, 0, 0, 0, 
    0, 128, 0, 1, 
    128, 0, 1, 0, 
    128, 128, 1, 1, 
}; 

glBindTexture(GL_TEXTURE_2D, texId); 
glEnable(GL_TEXTURE_2D); 

glTexCoordPointer(2, GL_FLOAT, 4*4, &v[2]); 
glVertexPointer(2, GL_FLOAT, 4*4, &v[0]); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_VERTEX_ARRAY); 

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

(난 당신이 직교 투영을 사용하여 그리는 있으리라 믿고있어, 그리고 128 텍스처의 크기입니다)

이 방법은 텍스처 위치는 모델 뷰 행렬을 사용하여 수정할 수 있습니다. texure 행렬은 텍스처가 삼각형에 적용되는 방식을 수정하는 데 사용될 수 있습니다.

+0

해답을 가져 주셔서 감사합니다. 그러나 저는 쿼드를 직접 쉽게 그릴 수 있음을 알고 있습니다.하지만 다른 플로트 배열을 할당하고 버스를 통해 데이터를 전송할 필요가없는 대안이 있는지 궁금했습니다.하지만 단지 몇 줄의 코드이기 때문에 답변으로 표시 할 것입니다. – devsnd

관련 문제