게임을 복제하고 싶습니다. 게임의 목표는 같은 색을 가진 2 개의 사각형 사이에 경로를 만드는 것입니다. 여기 opengl glsl glsl을 사용하면 모델이 보이지 않는 버그 다른 매개 변수를 사용하여 텍스처 함수
는 게임이다 :www.mypuzzle.org/3d-logic-2 큐브 6 개면을 가지고있다. 각 얼굴은 3x3 사각형을가집니다.
빈 사각형 (환경 반영), 벽 사각형 (색상 지정 불가능), 시작/끝 사각형 (중간에 검은 색 사각형이 있지만 나머지는 색이 지정됨) .
내 프로젝트를 마무리하는 데 거의 다쳤지만 버그가 있습니다. 나는 C++, sfml, opengl, glm을 사용했다.
문제는 쉐이더에 있습니다.
정점 셰이더 :
#version 330 core
layout (location = 0) in vec3 vPosition;
layout (location = 1) in vec3 vColor;
layout (location = 2) in vec2 vTexCoord;
layout (location = 3) in float vType;
layout (location = 4) in vec3 vNormal;
out vec3 Position;
out vec3 Color;
out vec2 TexCoord;
out float Type;
out vec3 Normal;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
void main()
{
gl_Position = projection * view * model * vec4(vPosition, 1.0f);
Position = vec3(model * vec4(vPosition, 1.0f));
Color=vColor;
TexCoord=vTexCoord;
Type=vType;
Normal = mat3(transpose(inverse(model))) * vNormal;
}
단편 쉐이더 : 나 특정 형식을 가지는 사각형의 픽셀을 그리는 프래그먼트 쉐이더
#version 330 core
in vec3 Color;
in vec3 Normal;
in vec3 Position;
in vec2 TexCoord;
in float Type;
out vec4 color;
uniform samplerCube skyboxTexture;
uniform sampler2D faceTexture;
uniform sampler2D centerTexture;
void main()
{
color=vec4(0.0,0.0,0.0,1.0);
if(Type==0.0)
{
vec3 I = normalize(Position);
vec3 R = reflect(I, normalize(Normal));
if(texture(faceTexture, TexCoord)==vec4(1.0,1.0,1.0,1.0))
color=mix(texture(skyboxTexture, R),vec4(1.0,1.0,1.0,1.0),0.3);*/
}
else if(Type==1.0)
{
if(texture(centerTexture, TexCoord)==vec4(1.0,1.0,1.0,1.0))
color=vec4(Color,1.0);
}
else if(Type==-1.0)
{
color=vec4(0.0,0.0,0.0,1.0);
}
else if(Type==2.0)
{
if(texture(faceTexture, TexCoord)==vec4(1.0,1.0,1.0,1.0))
color=mix(vec4(Color,1.0),vec4(1.0,1.0,1.0,1.0),0.5);
}
}
/*
Type== 0 ---> blank square(reflects light)
Type== 1 ---> start/finish square
Type==-1 ---> wall square
Type== 2 ---> colored square that was once a black square
*/
셰이더 만 1로 입사하므로 각 사각형에 대해 4면. 이 프로그램은 glsl 함수 texture
을 같은 텍스처로만 사용하면 잘 작동합니다. 이 함수를 다른 텍스처로 두 번 사용하면 2 가지 경우에 내 모델이 보이지 않게됩니다. 왜 그런 일이 일어나는거야?
https://postimg.org/image/lximpl0bz/
https://postimg.org/image/5dzvqz2r7/
붉은 광장
내 모델이 보이지 않는 가서 다음 경우 내가 유형 == 0 코드를 수정 한 유형 1이다.