Mit rontottam el a shaderben, ami miatt nem találja az uniform változómat?
Egy tutorial alapján írtam egy vertex és egy fragment shadert, de folyamatosan hibába ütközök - nem találja az uniform változót. Mit rontottam el? Tudom, hogy ha nem használom a változót, akkor alapból nem is használja, de használatban van:
Vertex shader:
[spoiler]
#version 130
in vec2 vertexPosition;
in vec4 vertexColor;
in vec2 vertexUV;
out vec2 fragmentPosition;
out vec4 fragmentColor;
out vec2 fragmentUV;
void main()
{
gl_Position.xy = vertexPosition;
gl_Position.z = 0.0;
gl_Position.w = 1.0;
fragmentPosition = vertexPosition;
fragmentColor = vertexColor;
fragmentUV = vertexUV;
}
[/spoiler}
fragment shader:
[spoiler]
#version 130
in vec2 fragmentPosition;
in vec4 fragmentColor;
in vec2 fragmentUV;
out vec4 color;
uniform float time;
uniform sampler2D mySampler;
void main()
{
vec4 textureColor = texture(mySampler, fragmentUV);
color = textureColor * fragmentColor;
//color = fragmentColor;
}
[/spoiler]
A programodban adtal erteket az uniform valtozonak?
Plusz, melyikben van a hiba? A time-ot nem hasznalod.
OpenGL-ben nem vagyok annyira otthon, de ha jol emlekszem, a Texture Samplert nem igy kell hasznalni. Igy lenne a jo:
vec4 textureColor = texture2D(mySampler, fragmentUV);
Mivel egy 2D-s texturabol akarsz erteket kapni.
Ezzel kezdtem az ide vonatkozó részt:
glUseProgram(_programID);
utána használtam ezt:
GLuint GLSLProgram::getUniformLocation(const std::string& uniformName)
{
GLuint location = glGetUniformLocation(_programID, uniformName.c_str());
if (location = GL_INVALID_INDEX)
{
fatalError("Uniform " + uniformName + " not found in shader! Return: " + std::to_string(location));
}
return location;
}
Ami így fest:
GLint textureLocation = _colorProgram.getUniformLocation("mySampler");
glUniform1i(textureLocation, 0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _playerTexture.id);
Erre gondoltál értékadás alatt?
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!