이 중 절반이 생겼 방법입니다 렌더링합니다. DX11 및 OpenGL에 사용되는 동일한 정점/UV 좌표를 사용합니다. 이 장면은 DirectX10에서 렌더링되었습니다.
이는 DirectX11 및 OpenGL처럼 보이는 방법이다.
어떻게 이런 일이 발생할 수 있는지 알 수 없습니다. 나는 DX10과 DX11 모두 위에 동일한 코드를 사용하고 있으며, 둘 다 정말로 비슷한 것을 처리한다. 문제가 무엇인지, 문제를 해결하는 방법에 대한 아이디어가 있습니까? 필요한 경우 코드를 보낼 수 있습니다.
또한 다른 질감을 사용합니다.
은 텍스처의 투명한 부분을 빨간색으로 변경했습니다.
조각 쉐이더 GLSL
#version 330 core
in vec2 UV;
in vec3 Color;
uniform sampler2D Diffuse;
void main()
{
//color = texture2D(Diffuse, UV).rgb;
gl_FragColor = texture2D(Diffuse, UV);
//gl_FragColor = vec4(Color,1);
}
버텍스 쉐이더 GLSL
#version 330 core
layout(location = 0) in vec3 vertexPosition;
layout(location = 1) in vec2 vertexUV;
layout(location = 2) in vec3 vertexColor;
layout(location = 3) in vec3 vertexNormal;
uniform mat4 Projection;
uniform mat4 View;
uniform mat4 World;
out vec2 UV;
out vec3 Color;
void main()
{
mat4 MVP = Projection * View * World;
gl_Position = MVP * vec4(vertexPosition,1);
UV = vertexUV;
Color = vertexColor;
}
나중에 참조 할 수 있도록 GLSL 3.30 코어 쉐이더를 작성할 때는'gl_FragColor' 또는'texture2D (...) '를 사용하지 마십시오. 그것들은 더 이상 사용되지 않습니다. 많은 GLSL 컴파일러를 사용하면 계속 사용할 수 있지만 필수는 아닙니다. 사용자 정의 프래그먼트 출력 (예 :'vec4 frag_color')과'texture (...)'(GLSL 1.30에서 시작하는 모든 샘플러 유형을 사용하는 오버로드 된 함수)를 사용해야합니다. –