Impossible de faire fonctionner la transformation 2D

moi et mon copain essayons de créer un moteur 2D, mais nous ne pouvons pas faire fonctionner la Transformeration, c'est à quoi ça ressemble maintenant. Nous avons créé des matrices pour chaque élément comme la mise à l'échelle, la traduction, etc. Mais nous ne pouvons pas faire bouger le quad ou faire quoi que ce soit, avons-nous fait des erreurs de calcul? C'est ce que nous obtenons maintenant, nous rendons simplement le VBO et n'utilisons pas les Shaders. Avec les Shaders, je veux dire que nous sommes GLSL.

http://imgur.com/T0jDSTO

Transformer

http://pastebin.com/dKRW244e

Matrix3f

http://pastebin.com/GY0872k6

Matrix4f

http://pastebin.com/f1YNuM09

VBO

http://pastebin.com/5zVgWYtK

BasicShader

http://pastebin.com/RyeSxibQ

Shader

http://pastebin.com/68tJTswq

VertexShader

http://pastebin.com/ffDvsL2Y

FragmentShader

http://pastebin.com/SWT5EKAi

D'où nous rendons et mettons à jour

http://pastebin.com/dTG6HHDX

Je pense que j'ai foiré pour lier les shaders au vbo, n'est-ce pas? Et si oui, comment puis-je le réparer ...

Aussi, je veux juste répondre en opengl moderne, donc pas glBegin() et glEnd() Merci!

0
Je fais ceci avant que j'appelle la méthode de rendu. D'une classe appelée Engine.
ajouté l'auteur thetheodor, source
J'ai, j'ai même testé pour le mettre juste avant le rendu du vbo. Pourriez-vous voir si la transformation a été faite correctement?
ajouté l'auteur thetheodor, source
Je suis curieux, car cela peut aider, mais dans la classe où vous commencez, avez-vous veillé à effacer votre écran avant chaque image? Ceci est le plus souvent fait en utilisant glClear (GL_COLOR_BUFFER_BIT); à l'intérieur de votre boucle de jeu principale.
ajouté l'auteur hasherr, source
Où que ce soit glClear() , placez-le dans votre boucle de jeu principale. L'écran doit être effacé une fois par image afin de simuler tout type de mouvement, que ce soit des translations, des transformations ou des réflexions.
ajouté l'auteur hasherr, source

1 Réponses

In your vertex shader, you wrote gl_Position = in_Position * transform;

Cela devrait renvoyer une matrice plutôt qu'un vecteur. Étant donné que votre rectangle est blanc et que vous avez pris des dispositions pour la couleur, je risquerais que votre shader ne compile pas du tout.

gl_Position = transform * in_Position; is the correct order for transforming a vector with a matrix.

0
ajouté
Je vais tester cela après avoir corrigé le bug du shader.
ajouté l'auteur thetheodor, source
Pouvez-vous voir si mes matrices sont faites correctement? Et si je devais transformer en multiplier toutes les matrices pour obtenir la matrice de transformation?
ajouté l'auteur thetheodor, source
Il n'y a rien de mal avec le vecteur matrix * (c'est en fait la convention que l'ancien pipeline à fonction fixe a suivi). GLSL traitera un vecteur comme un vecteur de ligne ou de colonne en fonction de l'oder des multiplications, donc M * v est le même que v * transpose (M)
ajouté l'auteur derhass, source