2012-11-15 6 views
4

R (실수)의 부동 소수점 값에서 (0,1)로 매핑되고 255가 곱해진 값 (0, 255)을 갖는 GLubyte로 2D 텍스처를 채 웁니다. . 저장은 텍스처에서 1 개의 값만 필요하기 때문에 GL_R8과 같습니다. 예를 들어 수학 함수를 나타낼 수 있습니다.2D 텍스처의 값을 기반으로 1D 텍스처 샘플링

또한 1d 텍스처를 업로드하여 색상 표/색상 막대로 사용합니다. 그런 다음 2D 텍스처의 값을 기반으로 1 차원 텍스처를 샘플링합니다.

이 내 조각 쉐이더 작동 방법은 다음과 같습니다

#version 400 
in vec2 f_textureCoord; 

layout(location = 0) out vec4 FragColor; 

uniform sampler2D textureData; 
uniform sampler1D colorBar; 


void main() { 
    /* Values in the sampler are on (0, 1) * 255 => (0, 255) */ 
    vec3 texColor = texture2D(textureData, f_textureCoord).rgb; 
    float s = texColor.r; 

    /* Use the texture value as a coordinate in the 1D colorbar texture */ 
    vec3 color = texture1D(colorBar, s).rgb; 

    float val = color.r; 
    FragColor = vec4(val, val, val, 1); 
} 

이 나는 ​​다음과 같은 오류가 사용 :

glValidateProgram: Validation Error: Samplers of different types point to the same texture unit

그러나, 내 코드는 예상대로 작동, 적어도 렌더링 결과!

내 질문은 :

1) 왜이 오류/경고를받을 수 있나요? --- 답변으로 응답 ...

2) 내가하려는 일에 대한 올바른 접근 방식입니까? 함수 값을 2D 텍스처로 저장하는 대신 버퍼의 다른 형식을 사용해야합니까?

3) 수학 함수 (2D 텍스처 채우기)가 텍스처 크기 제한을 초과 할 때 문제가 발생한다고 가정합니다. 이 문제를 해결하기 위해 어떻게해야하는지에 대한 권장 사항은 무엇입니까?

+1

동일한 질감 단위를 두 샘플러에 모두 바인딩하는 것으로 의심됩니다. 그것이 작동하는 이유는 나를 넘어선 것이다. – Thomas

+0

'# version' 지시어는 어디에 있습니까? – genpfault

+0

@genpfault : #version 400을 사용합니다. 컴파일시입니다 .. – toeplitz

답변

2

) glDraw * 명령 전에 glValidateProgram을 호출하여 균일 한 위치와 속성 위치를 올바르게 설정했는지 확인하십시오. 따라서 프로그램 연결 후 두 샘플러 텍스처 단위가 여전히 0이기 때문에 잘못된 경고가 발생합니다.

2) 컬러 인덱스를 사용하여 기능 결과를 표시하는 것이면 괜찮습니다. 제대로 이해한다면 textureData에는 회색 값만 포함됩니다. 당신은 질감에서 하나 개의 성분을해야하는 경우, 당신은 당신이 하나의 텍스처에 투입 할 수있는 것보다 더 많은 데이터를 표시해야하는 경우 타일을 사용해야합니다)

float s = texture2D(textureData, f_textureCoord).r; 

3.를 작성해야합니다 (즉하게 분할 여러 텍스처의 데이터 및 여러 그리기).

+0

타일링 기술을 사용하여 이음새를 피할 수 있습니까? – toeplitz

+0

@toeplitz : 사용 된 보간법에 따라 이음새를 피하기 위해 작은 중첩 영역이 필요할 것입니다 – kakTuZ

0

glValidateProgram은 프로그램이 현재 OpenGL 상태 인으로 렌더링하는 데 사용할 수 있는지 여부를 감지합니다. 여기에는 텍스처의 현재 바인딩, 균일 버퍼 및 텍스처에 직접 액세스하는 다른 것들 (버퍼 및 꼭지점 특성 그리기는이 목록에 포함되지 않음)이 포함됩니다.

관련 문제