В шейдерах OpenGL не получается использовать texture2D и textureCube вместе
Мне надо использовать обычную 2d текстуру и текстуру куба через один шейдер, но если я использую их через if то всё ломается, нет ничего, чёрное окно. Если использовать что-то одно, то всё нормально, например если я использую только textureCube, то куб будет с текстурой, остальное нет. Погуглил, нашёл такой же открытый вопрос на английском, там был ответ (он не был помечен как правильный), но я его не понял.
//fragment shader
#version 120
uniform sampler2D GL_TEXTURE_2D;
uniform samplerCube GL_TEXTURE_CUBE_MAP;
varying vec4 color;
uniform int setTexture;
uniform int isCube;
varying vec4 TexCoord;
void isCubes()
{
gl_FragColor = textureCube(GL_TEXTURE_CUBE_MAP, TexCoord.rgb);
}
void notCube()
{
gl_FragColor = texture2D(GL_TEXTURE_2D, TexCoord.rg);
}
void main()
{
if(setTexture != 0)
{
if(isCube != 0)
isCubes();
else
notCube();
}
else
{
gl_FragColor = color;
}
if(gl_FragCoord.x > ((1920.0/2.0)-1.0) && gl_FragCoord.x < ((1920.0/2.0)+1.0) && gl_FragCoord.y > ((1080.0/2.0)-1.0)&& gl_FragCoord.y < ((1080.0/2.0)+1.0))
gl_FragColor.rgb = vec3(1)-gl_FragColor.rgb;
}
//vertex shader
#version 120
varying vec4 color;
varying vec4 TexCoord;
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
color = gl_Color;
TexCoord = gl_MultiTexCoord0;
}