2013-07-01 4 views

답변

1

간단한 정점 셰이더를 사용하여 텍 스 오른쪽 위 모서리가 올바른 위치에 있도록하기 위해 일부 논리를 추가 할 수 있습니다.

attribute vec4 position; 
varying vec2 texCoord; 

void main() 
{ 
    texCoord = position.xy * vec2(1.0, -1.0); 
    gl_Position = position; 
} 

및 그 texCoord를 가져 와서 샘플러로 전달하는 픽셀 셰이더.

varying vec2 texCoord; 
uniform sampler2D sampler; 

void main(void) 
{ 
    gl_FragColor = texture2D(sampler, texCoord); 
} 
+0

위치가 vec4이고 vec2 인 texCoord에 맞지 않는 문제가 있습니다. 오타가 있거나 그 대신에 다른 것이어야할지 모르겠다. – PerracoLabs

+0

@Zhenya 네가 4 자 도면을 그리기 때문에 @ xy 좌표 만 필요하기 때문에 오타가된다. 답변을 업데이트했습니다. – Vasaka

0

적절한 투영 행렬을 적용하거나 정점 셰이더에서 Y 좌표를 뒤집어서 일반적인 그리기 작업을하십시오. 당신은 어떤 투영법을 사용하고 코드를 게시하지 않았는지를 지정하지 않았으므로 이것이 내가 당신에게 줄 수있는 대답입니다.

+0

나는 쿼드를 가지고 있는데 비트 맵에 그려 넣습니다. 문제는 내가 왼쪽 상단 구석에서 그것을 페인트해야하지만, OpenGL은 왼쪽 하단 구석에서 그립니다. 참고로 비트 맵은 쿼드보다 작지만 꼭지점 왼쪽부터 그려야하므로 비트 맵으로 채워지지 않은 빈 영역은 쿼드의 오른쪽과 아래입니다. – PerracoLabs

+0

@Zhenya : 설명 주셔서 감사합니다.하지만 질문에 지금까지 시도한 코드를 추가하면 조금 수정할 수 있습니다. – datenwolf