0에서 1까지의 512 값을 보유하는 1 차원 텍스처를 사용하여 간단한 텍스처 쿼드 (2 삼각형)를 그립니다. NVIDIA GeForce GT 750M에서 RGBA_32F를 사용하고 있습니다. GL_LINEAR 보간 및 GL_CLAMP_TO_EDGE.OpenGL 텍스처 정밀도/texcoord 대 속성
I는 다음 셰이더를 사용하여 쿼드 그린다
varying vec2 v_texcoord;
uniform sampler1D u_texture;
void main()
{
float x = v_texcoord.x;
float v = 512.0 * abs(texture1D(u_texture,x).r - x);
gl_FragColor = vec4(v,v,v,1);
}
을 기본적으로, 텍스처 값과 파편 좌표 사이의 차이를 표시하고있다. (
내가 문제를 좁힐 만이 값을 한 차원 텍스처를 생성하려고 시도 0 : 여기 검은 쿼드 (차이가 없음)을 얻을 수 있었으면하지만되었다 내가 대신 무엇을 얻을 1) 및 사용하여 표시 : 다음
varying vec2 v_texcoord;
uniform sampler1D u_texture;
void main()
{
float x = v_texcoord.x;
float v = texture1D(u_texture,x).r;
gl_FragColor = vec4(v,v,v,1);
}
를 내가 얻을 :
OBVIO usly 이것은 0에서 1까지의 선형 보간이 아닙니다. 결과는 검정, 보간 및 흰색의 3 개 영역으로 나뉘는 것으로 보입니다. 다른 래핑 값을 시도했지만 성공하지 못했습니다 (그러나 다른 결과). 내가 여기서 뭘 잘못하고 있는거야?
버텍스 쉐이더에서 색상을 결정한 다음이를 프랙 처 쉐이더로 전달하면 차이가 있습니까? –
예, 텍스처는 실제로 모든 조각에서 함수를 보간하는 데 사용됩니다. 나는 여기에 단순화 된 버전을 게시했습니다. –