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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

14.06.2010, 15:06

Fragen zu den Änderungen in OpenGL 3

Ich möchte jetzt endlich mal OpenGL 3 nutzen. Dafür möchte ich meinen alten Code zu überarbeiten, dass ich auf Altlassten wie "glBegin" usw. verzichten kann.
Dazu würde ich gerne wissen, was es noch alles an Änderungen in OpenGL 3 gibt.
Gibt es z.B. noch "glColor" (also z.B. glColor4ub), oder ist das auch ausgestorben?
Ich bin mir nicht ganz sicher ob das sowieso keien auswirkung auf "glDrawArrays" hat.
Zudem würde mich interessieren, ob glDrawArrays ansich schneller ist als mit glBegin/glEnd zu arbeiten.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

2

14.06.2010, 15:31

glColor hat keine Auswirkung auf glDrawArrays. Die Farben der einzelnen Primitiven wird ebenfalls wie die Vertexdaten über Arrays übergeben. Demnach hat es keinerlei Sinn mehr ohne glBegin und wurde auch entfernt.

Grundsätzlich wurde halt die ganze Fixed Function Pipeline entfernt und damit alles was dazu gehört: Matrix Stack, Material und Beleuchtung etc. Ziemlich ausführlich ist die Liste in der Spec http://www.opengl.org/registry/doc/glspe…re.20091207.pdf im Anhang E2.2

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

14.06.2010, 17:57

glColor hat keine Auswirkung auf glDrawArrays. Die Farben der einzelnen Primitiven wird ebenfalls wie die Vertexdaten über Arrays übergeben. Demnach hat es keinerlei Sinn mehr ohne glBegin und wurde auch entfernt.
Wo steht denn das glColor nicht zusammen mit glDrawArrays funktioniert?


Zitat


Zudem würde mich interessieren, ob glDrawArrays ansich schneller ist als mit glBegin/glEnd zu arbeiten.


Man kanns auch mit Compiled VS oder Vertexbuffern verhauen. Insofern sind das keine Garanten für extreme Performance. Aber grundsätzlich Ja.

Du kannst auch in den Compatibility Specs von GL3.3 nachsehen. Alles orange markierte is nichmehr im Core drin.
@D13_Dreinig

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »David_pb« (14.06.2010, 18:07)


Tobiking

1x Rätselkönig

  • Private Nachricht senden

4

14.06.2010, 21:31

Wo steht denn das glColor nicht zusammen mit glDrawArrays funktioniert?

Ok, das war etwas missverständlich ausgedrückt. Was ich schreiben wollte war, das glColor keine Auswirkung mehr hat, wenn man das Color Array nutzt. Ich bin irgendwie davon ausgegangen das es darum ging in dem Array verschiedene Farben zu nutzen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

15.06.2010, 00:11

Wo steht denn das glColor nicht zusammen mit glDrawArrays funktioniert?

Ok, das war etwas missverständlich ausgedrückt. Was ich schreiben wollte war, das glColor keine Auswirkung mehr hat, wenn man das Color Array nutzt. Ich bin irgendwie davon ausgegangen das es darum ging in dem Array verschiedene Farben zu nutzen.


Das ist allerdings nicht das was du gesagt hast... Und so wie du es nun beschreibst hat das zwar seine Richtigkeit begründet aber nicht:

Zitat von »Tobiking«

Demnach hat es keinerlei Sinn mehr ohne glBegin und wurde auch entfernt.
@D13_Dreinig

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

15.06.2010, 11:08

Aber glColor ist trotzdem nicht mehr vorhanden, oder?
Und ist glDrawArrays jetzt schneller als mit glBegin/glEnd? (wenn man in OGL 1.0 bis 2.1 immer noch glBegin/glEnd zur Auswahl hat)

7

15.06.2010, 11:18

Wenn man 10k Polygone zeichnet kommen bei glBegin/glEnd schonmal 40k Funktionsaufrufe zustande, die du sonst einfach durch 1-5 Aufrufe ersetzen kannst, und das belastet die CPU natürlich ziemlich.
Lieber dumm fragen, als dumm bleiben!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

15.06.2010, 11:28

Den großen Vorteil gegenüber glBegin()/glEnd() erlangt man nicht nur durch den weitaus geringeren API Overhead sondern vor allem erst auch wenn man Vertex Buffer Objects verwendet.

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

9

15.06.2010, 15:24

Lohnt es sich denn auch glDrawArrays anstatt glBegin/glEnd zu verwenden, wenn man (ohne VBOs) nur ein Quad zeichnen will (für 2D Grafik z.B.).

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

15.06.2010, 15:29

Lohnt es sich denn auch glDrawArrays anstatt glBegin/glEnd zu verwenden, wenn man (ohne VBOs) nur ein Quad zeichnen will (für 2D Grafik z.B.).


Das sind ehrlich gesagt die falschen Fragen die du stellst. Wenn du's geschickt anstellst lohnt es sich, wenn du's falsch machst dann nicht. Du kannst Overlaydaten batchen und dann den Puffer in die Pipeline kloppen... Mach doch einfach selbst ein paar Vergleichtests, dann weißt du bescheid und musst dich nicht auf wage Aussagen stützen! ;)
@D13_Dreinig

Werbeanzeige

Ähnliche Themen