2016-07-05 3 views
0

내 디버깅에서 길이가 128 픽셀 인 1D 텍스처로 인해 좌표를 [0,1] 범위가 아닌 GLSL 조각 셰이더의 texture1D으로 전달해야하지만 [0,1-1./257]과 같은 것으로 나타났습니다 (증가 257->258은 아티팩트 다시, 이등분으로 얻은 수는 0.99610897). 그렇지 않으면 s==0에서 얻은 값을 반복합니다.텍스처 좌표 범위가 가장자리 텍셀의 바깥 쪽 가장자리에서 끝나나요?

텍스처 파라미터 GL_TEXTURE_WRAP_T을 기본값 GL_REPEAT 대신 GL_CLAMP_TO_EDGE으로 설정하면 물론 이것은 발생하지 않습니다.

텍스처 좌표 범위의 끝이 가장자리 텍셀의 중심이 아니라 그 바깥 쪽 가장자리에 있다는 결론에 도달했습니다.

그것은 그때 (GL_REPEAT 모드에서) GL_NEARESTGL_TEXTURE_*_FILTER를 설정하면 샘플링이 s 지정의 오른쪽에있는 텍셀에서 보이는 것처럼 GL_LINEAR 필터는 평균을 취하면서, 그것이 작동 나을 좌우 s==1에 대한 텍셀입니다.

내 결론이 맞습니까? 텍스쳐 좌표의 끝은 텍셀의 바깥 쪽 가장자리가 아닌, 그 중심에있다.

+1

예. 이것이 실제로 의미있는 유일한 방법입니다. [0, 1]은 텍셀의 전체 범위를 다루기 때문에, s = 1은 가장 오른쪽의 텍셀의 오른쪽 모서리 여야한다. 동일한 질문은 아니지만 설명은 내 대답과 매우 유사합니다. http://stackoverflow.com/questions/31810822/opengl-3d-texture-shine-through. –

답변

0

텍스처 좌표 범위의 끝이 가장자리 텍셀의 중심이 아니라 그 바깥 쪽 가장자리에 있다는 결론에 도달했습니다.

수정.