Praxis 5

Moderator: Game Technology

firefluxx
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 12. Feb 2014 14:55

Praxis 5

Beitrag von firefluxx » 23. Nov 2016 12:19

Hallo,

leider stecken wir grade am Anfang von der 5. Praxisübung fest und wissen absolut nicht, was wir eigentlich genau machen sollen. Die Aufgabenstellung ist ziemlich knapp gehalten und der gegeben Code ist ja auch wenig bis gar nicht kommentiert.
Vielleicht kann uns ja jemand Starthilfe leisten :? :?

0b101101101
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 179
Registriert: 15. Apr 2015 18:24

Re: Praxis 5

Beitrag von 0b101101101 » 23. Nov 2016 16:55

Hm, also wir haben versucht im Vertex Shader ein Attribut hinzu zu fügen und das mit getConstantLocation unten und setFloat3 oben zu setzten, aber wir haben den Verdacht das der Wert trotzdem 0 bleibt. Zumindest scheint der Wert zu verschwinden wenn man normalize drauf aufruft, was ahnen lässt, dass da eine Division durch 0 auftritt oder so. Also gehen wir davon aus, dass wir es nicht geschafft habene den Wert korrekt zu übergeben.

Außerdem ist nor auch 0? Müssen wir das selbst setzen?

Wissen auch nicht so wirklich weiter gerade! Wäre nett, wenn jemand einen Tipp oder ein Beispiel hat, wie einen Wert übergibt. Wir haben zum Beispiel auch nicht gefunden wo pos übergeben wird, obwohl sich dieser Wert merkbar ändert, (wenn man zb die Farbe auf pos.x setzt sieht man das).

999
Windoof-User
Windoof-User
Beiträge: 27
Registriert: 24. Okt 2016 18:21

Re: Praxis 5

Beitrag von 999 » 24. Nov 2016 02:00

Mit getConstantLocation holt ihr euch uniforms und keine attributes. Im vertex shader könntet ihr also zum Beispiel ein

Code: Alles auswählen

uniform vec3 foo;
stehen haben und mit

Code: Alles auswählen

foo = program->getConstantLocation("foo");
und

Code: Alles auswählen

Graphics::setFloat3(foo, 1, 2, 3);
darauf zugreifen.

pos, nor und die Texturkoordinaten werden in der init() Funktion gesetzt, diesbezüglich müsst ihr nichts selbst hinzufügen

save_jeff
Neuling
Neuling
Beiträge: 8
Registriert: 24. Nov 2016 10:50

Re: Praxis 5

Beitrag von save_jeff » 24. Nov 2016 10:53

Ich hatte lange fehler mit dem Depth Test von OpenGL.

Ich konnte mein problem lösen indem ich DepthWrite aktiviert habe:

Code: Alles auswählen

//DepthWrite aktivieren:
Graphics::setRenderState(DepthWrite, true);
Graphics::setRenderState(DepthTest, true);
Graphics::setRenderState(DepthTestCompare, ZCompareLessEqual);
Hoffe das Hilft manchen

0b101101101
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 179
Registriert: 15. Apr 2015 18:24

Re: Praxis 5

Beitrag von 0b101101101 » 30. Nov 2016 13:46

Code: Alles auswählen

uniform vec3 foo;
foo = program->getConstantLocation("foo");
Wenn ich das hinschreibe, dann ist aber foo.location == -1, und wenn ich das richtig gelesen habe, tritt dann ein Fehler beim Holen der Location auf, und die Variable/Uniform/Location ist deswegen nicht beschreibbar. Man kann auch die Nachricht "Uniform foo not found." im Terminal lesen.

FloM-KOM
Moderator
Moderator
Beiträge: 279
Registriert: 27. Apr 2010 17:20

Re: Praxis 5

Beitrag von FloM-KOM » 30. Nov 2016 13:55

Wird das uniform dann im Shader auch verwendet? Falls nicht kann es sein daß es rausoptimiert wird und dann nicht gefunden wird.

TomBombadil
Neuling
Neuling
Beiträge: 9
Registriert: 10. Nov 2016 21:50

Re: Praxis 5

Beitrag von TomBombadil » 30. Nov 2016 16:37

Hallo,

welchen typ hat euer foo im Exercise.cpp? Wir finden keinen passenden Typ.

Danke und Grüße

0b101101101
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 179
Registriert: 15. Apr 2015 18:24

Re: Praxis 5

Beitrag von 0b101101101 » 30. Nov 2016 22:14

Ich versuche dann später mal auf das rausoptimieren zu achten...

Der Typ? "ConstantLocation", aber "auto" müsste auch gehen, oder?

FloM-KOM
Moderator
Moderator
Beiträge: 279
Registriert: 27. Apr 2010 17:20

Re: Praxis 5

Beitrag von FloM-KOM » 30. Nov 2016 23:12

Ja, ConstantLocation ist der richtige Typ, auto sollte auch funktionieren.

Der Typ ist immer ConstantLocation, das ist gewissermaßen ein Handle für den Zugriff auf die jeweilige Variable. Je nach Typ der Variable muß man dann den passenden Setter (setFloat, ...) verwenden um den Wert zu übergeben.

0b101101101
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 179
Registriert: 15. Apr 2015 18:24

Re: Praxis 5

Beitrag von 0b101101101 » 1. Dez 2016 11:08

Tatsächlich, wenn man die Variable im Shader nicht benutzt, wird sie nicht gefunden.
Und ich hab aufgegeben, weil das schon nicht funktioniert hatte. :(

firefluxx
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 12. Feb 2014 14:55

Re: Praxis 5

Beitrag von firefluxx » 5. Dez 2016 19:43

Wo ist denn eigentlich die Lichtquelle?

0b101101101
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 179
Registriert: 15. Apr 2015 18:24

Re: Praxis 5

Beitrag von 0b101101101 » 9. Dez 2016 12:27

Ich habs mitlerweile geschafft! War dann doch recht einfach. Hm. Hinterher ist es immer einfach... :)

Antworten

Zurück zu „Game Technology“