這一半是應該的樣子。它使用與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);
}
的Vertex Shader 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編譯器會讓你繼續使用它們,但它們不是必需的。您應該使用用戶定義的片段輸出(例如'out vec4 frag_color')和'texture(...)'(這是一個重載函數,它採用所有采樣器類型,從GLSL 1.30開始)。 –