Kezdőoldal » Számítástechnika » Programozás » Mit rontottam el a shaderben,...

Mit rontottam el a shaderben, ami miatt nem találja az uniform változómat?

Figyelt kérdés

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]



2017. aug. 1. 09:58
 1/2 anonim ***** válasza:

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.

2017. aug. 1. 12:56
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

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?

2017. aug. 1. 20:33

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!