Du bist nicht angemeldet.

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

1

27.03.2016, 11:36

OpenGL - Problem beim rendern einer Figur

Hallo zusammen, ich habe ein Problem und weiß nicht wieso es nicht klappt. Ich möchte an der Position des Mauscursors eine Figur zeichnen, jedoch komm ich nicht drauf wieso nichts gezeichnet wird. Alles andere wird korrekt dargestellt und das Programm stürzt auch nicht ab. Hier die relevanten Code-Ausschnitte...

Die Initialisierung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    glGenVertexArrays(1, &mouse.VAO);

    glGenBuffers(1, &mouse.VBO);
    glGenBuffers(1, &mouse.EBO);

    glBindVertexArray(mouse.VAO);

    glBindBuffer(GL_ARRAY_BUFFER, mouse.VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(mouseVertices), mouseVertices, GL_STATIC_DRAW);

    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mouse.EBO);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(mouseIndices), mouseIndices, GL_STATIC_DRAW);

    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);
    glEnableVertexAttribArray(0);

    glBindBuffer(GL_ARRAY_BUFFER, 0);

    glBindVertexArray(0);
}


und der Renderaufruf:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    glfwGetCursorPos(window, &mousePosX, &mousePosY);
    glUseProgram(shaderProgramMouse);

    //std::cout << mousePosX << "|" << mousePosY << std::endl;
    glm::mat4 projection;
    glm::mat4 model;

    projection = glm::ortho(0.0f, (float) Game::WIDTH, 0.0f, (float) Game::HEIGHT);
    //(float) mousePosX, (float) mousePosY,

    model = glm::translate(model, glm::vec3((float) mousePosX, (float) mousePosY, 1.0f));
    glUniformMatrix4fv(glGetUniformLocation(shaderProgramMouse, "projection"), 1, GL_FALSE, glm::value_ptr(projection));
    glUniformMatrix4fv(glGetUniformLocation(shaderProgramMouse, "model"), 1, GL_FALSE, glm::value_ptr(model));

    glBindVertexArray(mouse.VAO);
    glDrawElements(GL_TRIANGLES, 12, GL_UNSIGNED_INT, 0);
    glBindVertexArray(0);

    glUseProgram(0);


Sieht jemand meinen Fehler?

simsusim

Frischling

Beiträge: 18

Wohnort: In einem kleinen Städtchen in Bayern

Beruf: Schüler(Gymnasium) 9. Klasse

  • Private Nachricht senden

2

30.03.2016, 16:34

Bist du sicher dass deine Shader korrekt sind?
Die Shader sind oft verantwortlich wenn auf dem Bildschirm nichts zu sehen ist.
Außerdem setzt du in deinem Code keine Farbinformation. Du setzt weder eine Farbe mit für die Vertices noch mit glUniform...
Es kann natürlich sein dass du die Farbe fest in deimem Fragment Shader setzt, aber das kann ich ohne den Shadercode natürlich nicht beurteilen.

Was hast du den für Koordinaten in deinem Vertexbuffer? Mit der Projektionsmatrix, die du setzt werden deine Objekte sehr stark skaliert (um den faktor 1/screenWidht, 1/screenHeight). Es könnte sein dass dein Objekt gerendert wird, aber sehr klein ist.