Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// VERTEX #version 150 uniform mat4 projection, modelview; in vec3 vertex0; in vec2 texCoord0; out vec2 texCoord; void main(){ texCoord = texCoord0; // hiermit funktioniert es nicht gl_Position = projection*modelview*vec4(vertex0, 1.0); } // FRAGMENT #version 150 precision highp float; uniform sampler2D texture0; in vec2 texCoord; void main(){ gl_FragColor = texture(texture0, texCoord.st); } |
Community-Fossil
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
void Model::render(mat4 projection, mat4 modelview){ mat4 m = getModelview(modelview); m_shader->bindShader(); m_shader->sendUniform4x4("projection", projection.getArray()); m_shader->sendUniform4x4("modelview", m.getArray()); m_shader->sendUniform("texture0", 0); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_texture->getTextureID()); m_shader->enableVertexAttribArrays(); glBindBuffer(GL_ARRAY_BUFFER, m_model->getVertexBuffer()); glVertexAttribPointer((GLint)0, 3, GL_FLOAT, GL_FALSE, 0, 0); glBindBuffer(GL_ARRAY_BUFFER, m_model->getTexCoordBuffer()); glVertexAttribPointer((GLint)1, 2, GL_FLOAT, GL_FALSE, 0, 0); glDrawElements(GL_TRIANGLES, m_model->getIndexCount(), GL_UNSIGNED_INT, &m_model->getIndices()); m_shader->disableVertexAttribArrays(); } |
Community-Fossil
C-/C++-Quelltext |
|
1 2 3 4 |
shader.push_back(new Shader("res/shader/sa_model.vsh", "res/shader/sa_model.fsh")); // vector (hier nur ein Shader enthalten) shader[0]->bindAttrib(SHADER_VERTEX, 0, "vertex0", 2); // Verwendungszweck (unwichtig), Index (für glEnable...), Name, Größe shader[0]->bindAttrib(SHADER_TEXCOORD, 1, "texCoord0", 2); shader[0]->initialize(); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
void reshape(int w, int h){ wndSize[0] = w; wndSize[1] = h; glViewport(0, 0, wndSize[0], wndSize[1]); // Viewport anpassen // Sprites anpassen sprites[0]->setViewport(0, 0, w, h); // <- passt Projection an } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); // kein depth buffer (GL_DEPTH_BUFFER_BIT) weil orthogonal sprites[0]->render(); glutSwapBuffers(); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
void Sprite::render(){ // <- wird in Hauptrenderfunktion aufgerufen if(m_haveShader && m_haveTexture){ // muss Shader und Textur haben (hat es) render(m_projection, getModelview(), m_shader, m_texture); } } void Sprite::render(mat4 projection, mat4 modelview, Shader *shader, Texture *texture){ // wird von render() aufgerufen shader->bindShader(); shader->sendUniform4x4("projection", projection.getArray()); shader->sendUniform4x4("modelview", modelview.getArray()); shader->sendUniform("texture0", 0); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, texture->getTextureID()); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer); glVertexAttribPointer((GLint)0, 2, GL_FLOAT, GL_FALSE, 0, 0); glBindBuffer(GL_ARRAY_BUFFER, m_texCoordBuffer); glVertexAttribPointer((GLint)1, 2, GL_FLOAT, GL_FALSE, 0, 0); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, &m_indices[0]); glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#version 150 uniform mat4 projection; uniform mat4 modelview; in vec2 vertex0; in vec2 texCoord0; out vec2 texCoord; void main(){ texCoord = texCoord0; // <- hier liegt der Fehler, denke ich! gl_Position = projection*modelview*vec4(vertex0, 0.0, 1.0); } |
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 |
#version 150 precision highp float; uniform sampler2D texture0; in vec2 texCoord; void main(){ gl_FragColor = texture(texture0, texCoord.st); } |
Quellcode |
|
1 2 3 4 5 6 7 8 |
[...] //out vec2 texCoord; void main(){ //texCoord = texCoord0; gl_Position = projection*modelview*vec4(vertex0, 0.0, 1.0); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeKugelschieber« (03.04.2012, 12:56)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Zitat
aufen andere Spiele mit Shadern auf Deinem System?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Community-Fossil
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige