cube mit 8 vertices

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Boris1993

Betreff: cube mit 8 vertices

BeitragSa, März 17, 2012 20:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebe Forummitglieder

ich habe seit gestern angefangen mich mit Blitzmax zu beschäftigen. ich habe auch schon einen würfel mit OpenGl erstellt der aus 6 quads besteht(also 24 Vertices). Nun ist meine Frage, wie kann man es schaffen, dass man einen würfel mit nur 8 vertices zum funktionierne bekommt?
war das verständlich ausgedrückt? Smile

danke schonmal für antworten

ich wünsch euch noch ein erholsames wochenende Very Happy

ZEVS

BeitragSa, März 17, 2012 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Gar nicht. Du kannst in einer Datei 8 Vertices speichern, aber du musst 24 mal glVertex* aufrufen.

ZEVS

Farbfinsternis

BeitragSa, März 17, 2012 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach die Vertices wiederverwenden dann gehen auch 8.
Farbfinsternis.tv

Noobody

BeitragSo, März 18, 2012 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dem immediate Mode (glBegin/glEnd) geht das nicht, da man Vertices nicht wiederverwenden kann. Du musst dafür Vertex- und Indexarrays (bzw. -buffer) verwenden. Siehe dazu glVertexPointer/glDrawElements.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

Boris1993

BeitragSo, März 18, 2012 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
ok schau ich mir mal an danke
 

Boris1993

BeitragSo, März 18, 2012 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habs geschafft der würfel dreht sich Very Happy
hat jemand noch verbesserungsvorschläge?


Code: [AUSKLAPPEN]

'-----Initialisierung-----

GLGraphics 1024, 768
glEnable GL_DEPTH_TEST               
glMatrixMode GL_PROJECTION            
glLoadIdentity()                  
glFrustum -0.1, 0.1,-0.1, 0.1, 0.1, 100      
glMatrixMode GL_MODELVIEW            
glLoadIdentity()                  

'-----Variablen-----

Local rcube:Float         
Local vertices:Float[]      
Local indices:Int[]

vertices = [1.0, 1.0, 1.0,-1.0, 1.0, 1.0,-1.0,-1.0, 1.0, 1.0,-1.0, 1.0, 1.0,-1.0,-1.0, 1.0, 1.0,-1.0,-1.0, 1.0,-1.0,-1.0,-1.0,-1.0]
indices = [0, 1, 2, 3, 0, 3, 4, 5, 0, 5, 6, 1, 1, 6, 7, 2, 7, 4, 3, 2, 4, 7, 6, 5]

'-----Hauptschleife-----

While Not KeyHit(KEY_ESCAPE)
   glClear GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT
   
   glLoadIdentity()   
   glTranslatef  0.0, 0.0,-7.0   
   glRotatef rcube, 0.0, 1.0, 0.0
   
   glEnableClientState GL_VERTEX_ARRAY
   glVertexPointer 3, GL_FLOAT, 0, vertices
   glDrawElements GL_QUADS, 24, GL_UNSIGNED_INT, indices
   glDisableClientState GL_VERTEX_ARRAY
   
   rcube:+0.5
   
   Flip
Wend

End

Xeres

Moderator

BeitragSo, März 18, 2012 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte benutze den Edit Button und erstelle keine Doppelposts, danke.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

PhillipK

BeitragSo, März 18, 2012 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
nope, sieht super aus.

Wenn du tatsächlich was verbessern willst:

1) Vermeide solche ellen langen array-zuweisungen. Mach lieber mehrere zeilen (zb mit .. um die zuweisung in der nächsten zeile fortzusetzen)
2) Schreibe lieber direkt einen File-loader und erschaffe ein TCube object (zb) ^^

Aber nee, sieht gut aus. So wirds gemacht, so passts (wenn ich mich nicht verlesen habe). Die einzige nächst bessere stufe wäre ein VBO, aber das bringt nur bei vielen vertices einen vorteil.

(VBO: Die vertex-positionsdaten werden in den Ram der Grafikkarte geladen und ihr wird nur gesagt, wo sie anfängt zu zeichnen. So müssen die daten nicht erst an die grafikkarte gesendet werden - speedboost. Aber wirklich nur, ab ein paar hundert vertices, sonst ist das ersparnis so gering, das ein einfacher print-aufruf schon mehr ausmacht ^^)
 

Boris1993

BeitragMo, März 19, 2012 0:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke für die tipps
ich denke mal dann werd ich demnächst so ein vbo brauchen ich hab mir nämlich das ziel gesetzt eine voxelengine wie die von minecraft oder cube worlds zu schreiben aber das wird eh noch dauern ich geh in kleinen schritten vor und muss erstaml noch die grundlagen lernen^^
wenn jemand noch weitere vorschläge hat zum beispiel was für eine voxelengine nützlich wär zu lernen oder so immer her damit Smile
eine gute nacht allen

BtbN

BeitragMo, März 19, 2012 4:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nachteil von einem 8 Vertex Cube ist natürlich, dass man ihn nicht vernünftig texturieren kann, da jede ecke nur eine Textur Koordinate hat.
 

Boris1993

BeitragDi, März 20, 2012 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh das is natürlich blöd^^ is es denn unmöglich noch vernünftig zu texturieren oder nur schwieriger?

BtbN

BeitragDi, März 20, 2012 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie willst du das anstellen, wenn du an jeder ecke nur eine Textur Koordinate hast? Spätestens an der stelle, wo die Textur zu ende ist, hörts auf.

AnniXa

BeitragMo, Apr 02, 2012 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Boris1993 hat Folgendes geschrieben:
Oh das is natürlich blöd^^ is es denn unmöglich noch vernünftig zu texturieren oder nur schwieriger?


Es ist unmöglich. Sad

Das mindeste was man für einen texturierten Würfel an Verticles braucht ist 12,
dann hat man an den Seiten 4 gleiche gespiegelte Flächen, und oben und unten jeh einzelne Flächen welche an der gespiegelte Flächen auf der Grafik anliegen müssen.
Für ein Würfel ohne gespiegelte Flächen mit "individuellen" Seiten sind jedoch 24 Verticles nötig.
Ansonsten gibt es noch diese "klappwürfel" uv map mit 14verticles, welche jedoch unter umständen sehr viel platz auf der textur benötigt.
|moonForge|
Ich bin Pokémon Meisterin seit 1998!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group