Вот как это должно выглядеть. Он использует те же координаты vertices/uv, которые используются для DX11 и OpenGL. Эта сцена была визуализирована в 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;
}
gl_FragColor
илиtexture2D (...)
; они устарели. Многие компиляторы GLSL позволят вам продолжать их использовать, но это не обязательно. Вы должны использовать определяемый пользователем вывод фрагмента (например,out vec4 frag_color
) иtexture (...)
(это перегруженная функция, которая принимает все типы семплеров, начиная с GLSL 1.30). - person Andon M. Coleman   schedule 21.12.2014