현대 OpenGL에서 프로그래밍을 시도하기로 결정한 후에 고정 기능 파이프 라인을 남겨 두었고 이전과 동일한 기능을 얻는 것에 대해 확신하지 못했습니다.픽셀 완벽한 텍스처 매핑과 최신 OpenGL
텍스처 크기와 일치하는 완벽한 크기의 픽셀로 텍스처를 맵핑하려고합니다. 예를 들어, 128x128 텍스처는 크기가 128x128 인 쿼드로 매핑됩니다.
이것은 내 버텍스 쉐이더입니다.
#version 110
uniform float fade_factor;
uniform sampler2D textures[1];
varying vec2 texcoord;
void main()
{
gl_FragColor = texture2D(textures[0], texcoord);
}
내 정점 데이터는 텍스처의 폭과 높이가 어디 w 및 h와 같은 것이다 :
#version 110
uniform float xpos;
uniform float ypos;
uniform float tw; // texture width in pixels
uniform float th; // texture height in pixels
attribute vec4 position;
varying vec2 texcoord;
void main()
{
mat4 projectionMatrix = mat4(2.0/600.0, 0.0, 0.0, -1.0,
0.0, 2.0/800.0, 0.0, -1.0,
0.0, 0.0, -1.0, 0.0,
0.0, 0.0, 0.0, 1.0);
gl_Position = position * projectionMatrix;
texcoord = (gl_Position.xy);
}
이 내 프래그먼트 쉐이더이다.
[
0, 0,
w, 0,
w, h,
0, h
]
나는 128 * 128 텍스처를로드하고이 쉐이더와 나는 이미지를 4 회 반복 참조 : http://i.stack.imgur.com/UY7Ts.jpg
올바른 길에 사람의 조언을 제공 번역 할 수 있도록 할 수와 규모가 TW의 일을 주어, X 좌표를 , xpos 유니폼?
안녕하세요, 왼손잡이! StackOverflow에 오신 것을 환영합니다. 기억해야 할 몇 가지 사항은 네 개의 공백 (또는'{}'아이콘)으로 코드를 들여 쓰기하여 적절하게 형식을 지정하십시오. 또한 OpenGL 태그에 게시 할 때 OpenGL 버전을 지정할 때 도움이됩니다. 특히 OpenGL 2.0과 같이 코드 샘플이 실제로 유용하기는하지만 실제로는 "현대적"인 것은 아닙니다. :) – Kos
답장을 보내 주셔서 감사합니다. 이것은 고정 함수 파이프 라인을 사용하지 않기 때문에 현대 OpenGL (> = 3?)입니다. 꼭지점 데이터가 배열로 제공되고 텍스처 샘플링이 쉐이더로 수행됩니다. 즉, 나는 아직도 비교적 새로운이에요 그래서 내가 틀렸다면 수정하십시오 :) – Lefty
related http://stackoverflow.com/questions/7922526/opengl-deterministic-rendering-between-gpu-vendor –