OpenGL ES 2.0을 처음 접했으니 제발 ... 내 조각 쉐이더에 BOOL 플래그를 전달하고 싶습니다. 내 앱에서 특정 터치 이벤트가 발생하면 gl_FragColor가 다르게 렌더링됩니다. 이 vec2 특성을 사용하여 시도하고 내 "BOOL"로 .x 값을 "속이는"하지만 Shader가 값을 얻기 전에 OpenGL에서 값을 0.0에서 1.0로 정규화하는 것처럼 보입니다. 그래서 내 앱에서 0.0으로 설정했는데 셰이더가 그 일을하는 동안 값은 결국 1.0에 도달합니다. 어떤 제안이라도 대단히 감사하겠습니다.Fragment Shader에 BOOL 값 보내기 iOS/iPhone의 OpenGL ES 2.0
VertexAttrib 코드 :
// set up context, shaders, use program etc.
[filterProgram addAttribute:@"inputBrushMode"];
inputBrushModeAttribute = [filterProgram attributeIndex:@"inputBrushMode"];
bMode[0] = 0.0;
bMode[1] = 0.0;
glVertexAttribPointer(inputBrushModeAttribute, 2, GL_FLOAT, 0, 0, bMode);
현재 버텍스 쉐이더 코드 :
...
attribute vec2 inputBrushMode;
varying highp float brushMode;
void main()
{
gl_Position = position;
...
brushMode = inputBrushMode.x;
}
현재 조각 쉐이더 코드 :
...
varying highp float brushMode;
void main()
{
if(brushMode < 0.5) {
// render the texture
gl_FragColor = texture2D(inputImageTexture, textureCoordinate);
} else {
// cover things in yellow funk
gl_FragColor = vec4(1,1,0,1);
}
}
미리 감사드립니다.
는 "이 OpenGL을 쉐이더 전에 0.0 ~ 1.0의 값을 정상화처럼 보이는 그것의 홀드 (Ahold)을 얻는다"쉐이더에서, 그래서 같은 값을 체크? 정점 속성을 사용하는 이유는 무엇입니까? 둘째,이 속성을 제공하기위한 설정 코드는 어디에 있습니까? 'glVertexAttribPointer'를 올바르게 사용하고 있습니까? –
나는 제복의 가치가 나중에 바뀔 수 없다는 인상을 받았다. 사실이 아닌가? 나는 꽤'glVertexAttribPointer'를 올바르게 사용하고 있다고 확신한다 - 나는 그 코드를 추가 할 것이다. 감사. – taber
균일 한 값은 언제든지 변경할 수 있습니다 (배치의 중간을 제외하고). – Tim