안녕하세요 저는 GLSL을 처음 사용하고있어서 몇 가지 문제가 있습니다.GLSL 2.0 색상 및 질감
색상이나 텍스처를 사용하기 위해 GLSL 셰이더 쌍을 만들려고하는데 잘못된 것을해야합니다. 문제는 uUseTexture를 0 (색상을 나타내야 함)로 설정하면 작동하지 않는다는 것입니다 (오브젝트가 색상이 지정되지 않음). 나는 색칠 코드가 별도로 작동한다는 것을 알고, 어떤 힌트가 if 문을 사용하여 작동하지 않는 이유는 무엇입니까? 여기
코드입니다 :// 조각
precision mediump float;
uniform int uUseTexture;
uniform sampler2D uSampler;
varying vec4 vColor;
varying vec2 vTextureCoord;
void main(void) {
if(uUseTexture == 1) {
gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
} else {
gl_FragColor = vColor;
}
}
// 정점
attribute vec3 aVertexPosition;
attribute vec4 aVertexColor;
attribute vec2 aTextureCoord;
uniform int uUseTexture;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying vec4 vColor;
varying vec2 vTextureCoord;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
if(uUseTexture == 1) {
vTextureCoord = aTextureCoord;
} else {
vColor = aVertexColor;
}
이'vec2 (vTextureCoord.s, vTextureCoord.t)'는'vTextureCoord.st'이어야합니다. GLSL에서 [swizzle masks] (http://www.opengl.org/wiki/GLSL_Types#Swizzling)가 어떻게 작동하는지 살펴 봐야합니다. –
'if (uUseTexture == 1)'을'if (true)'로 대체하면 같은 쉐이더 코드가 작동한다는 것을 의미합니까? – rotoglup