Womit am schnellsten einfache Linien Zeichnen?

Ich nochmal:
ich habe den Code mal getestet indem ich folgendes in die myDisplay-Funktion gebaut habe:

for ( int x = 0 ; x < 1000000 ; x++ ) {
glVertex2f(0.00,0.00);
glVertex2f(1.00,1.00);
}
glVertex2f(0.00,0.00);
glVertex2f(0.75,0.25);

Allerdings muss man zu lange warten, bis die 10^6 Linien gemalt sind...
Kann man da noch was optimieren?

Peter
 
Noch eine weiter Frage. Kann man die Koordinaten des Quadrats auch anders skalieren? Also so dass ich z.B. den Raum mit Bytes ansprechen kann. Also unten-links = 0/0 und oben/rechts=255/255 oder ist das immer ein float() von 0-1?
Du kannst mal bei gluOrtho2D andere Werte angeben, aber um die floats wirst du vermutlich nicht drumrum kommen.

Allerdings muss man zu lange warten, bis die 10^6 Linien gemalt sind...
Kann man da noch was optimieren?
Wenn du feste Koordinaten verwendest, könntest du mit Vertexlisten optimieren. Ich weiss allerdings nicht mehr die Befehle dafür. Dazu werden die Vertices einaml an OpenGL übergeben und können dann immer wieder gerendert werden. Ob das allerdings auch mit 1000000 Linien geht, weiss ich nicht.

Bei http://www.gamedev.net und http://www.flipcode.com wirst du viele weitere Infos und Tutorials zu OpenGL finden.
 
Allerdings muss man zu lange warten, bis die 10^6 Linien gemalt sind...
Kann man da noch was optimieren?


Ich glaube an deinem Konzept ist was falsch.

Bei einer Auflösung von 1280x1024 hat man ca. 1.3x10^6 Punkte und wenn man bedenkt dass eine Linie (meist) aus mindestens 2 Punkten besteht ...

Musst du nur die Punkte verbinden ? Wenn ja dann benutze GL_LINE_STRIP vielleicht bringt das noch ein Gewinn (verbindet zwei aufeinanderfolgende Punkte).

Was ist das für ein "Messgerät" wenn ich fragen darf (interessiert mich jetzt echt ;))? Wegen den Schnittpunkten das wird noch hart.
 
Hallo,

ich habe mal oben den Quellcode von colblake in meinen VC++ kopiert und compiliert. Klappt auch wunderbar, nur wenn ich dann auf RELEASE mode stelle, kommt entweder ein fehler
LINK : error : Internal error during ReadSymbolTable
ExceptionCode = C0000005
ExceptionFlags = 00000000
ExceptionAddress = 00465407
NumberParameters = 00000002
ExceptionInformation[ 0] = 00000000
ExceptionInformation[ 1] = 00000068
CONTEXT:
Eax = 00AC0F40 Esp = 0012F614
Ebx = 00000000 Ebp = 004A2640
Ecx = 00000000 Esi = 00AB0EE8
Edx = 00000001 Edi = 004A28F0
Eip = 00465407 EFlags = 00010202
SegCs = 0000001B SegDs = 00000023
SegSs = 00000023 SegEs = 00000023
SegFs = 00000038 SegGs = 00000000
Dr0 = 0012F614 Dr3 = 00000000
Dr1 = 004A2640 Dr6 = 00000000
Dr2 = 00000000 Dr7 = 00000000
Error executing link.exe.
Tool execution canceled by user.


oder er startet zwar ein DosFenster, jedoch kommt dann "zu wenig Arbeitsspeicher"

Ich habe 1GB Ram, also daran kann das wohl kaum liegen, weiss einer Rat evtl. eine Einstellung im VC++ ? Denn wenn ich das ganze auf dem Borland c++ Compiler starte, klappt es wunderbar.


Danke schonmal
 

Neue Beiträge

Zurück