 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
tkerwel
Anmeldungsdatum: 07.03.2011 Beiträge: 4
|
Verfasst am: 07.03.2011, 20:16 Titel: [gelöst] 3D Würfel mit unterschiedlichen Texturen je Seite |
|
|
Mahlzeit,
welche Engine ist dazu am besten geeignet?
ich hab bisher versucht mit minib3d einen Würfel zu erstellen, geht ja auch recht einfach. Nur kann man hier nur eine textur über alle seiten legen. nicht ganz das was ich möchte.
was ist mit irrlicht ? gibt es da einen ähnlichen weg das zu realiseren und hier pro Seite unterschiedliche texturen zu nutzen?
hat jemand ein vernünftiges tutorial oder eine quelle wo man sich einlesen kann?
Gruß aus Bremen
Thomas
Zuletzt bearbeitet von tkerwel am 09.03.2011, 12:42, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 07.03.2011, 20:41 Titel: |
|
|
Hallo,
ich hab das mal mit OpenGl gemacht (Sourcecode leider futsch..). Dazu gibts auch ein gutes Tutorial im FreeBASIC-Portal:
Bei "Grafikprogrammierung mit FreeBASIC" sind die 5 Teile zu sehen:
http://www.freebasic-portal.de/tutorials/
Und da ja soweit ich mich erinnern kann alles aus Flächen mit einzelnen Texturen erstellt wird machst du einfach einen Würfel aus 6 Flächen.
Gruß
-schumi- |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.03.2011, 23:08 Titel: |
|
|
Du könntest auch einen Würfel mit einem 3D-Modellierer erstellen(zB Wings3D), jeder Seite des Würfels eine andere Textur geben, den Würfel als .3ds speichern und ihn mit minib3d laden. Alternativ könntest du dir auch eine eigene Funktion schreiben, welche einen Würfel aus verschiedenen Surfaces zusammenstellt(guck dazumal am besten hier nach: http://www.blitzforum.de/help/?subcat=75 ). |
|
Nach oben |
|
 |
tkerwel
Anmeldungsdatum: 07.03.2011 Beiträge: 4
|
Verfasst am: 08.03.2011, 10:04 Titel: |
|
|
@schumi und Westbeam
erstmal danke für die Hinweise, werde mal euren Tips folgen und sehen ob ich das damit hinbekomme.
Nur eine Nachfrage:
was ist denn generell besser, OpenGL, minib3d oder irrlicht. Oder sollte man alle 3 Möglichkeiten kennen. Was empfiehlt hier der Fachman
Gruß aus Bremen
Thomas |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.03.2011, 13:36 Titel: |
|
|
Kommt drauf an, was du tun willst. minib3d und irrlicht sind nur Aufsätze auf OpenGL, d.h. sie nutzen die OpenGL-Technologie zur Darstellung. OpenGL dagegen ist sehr hardwarenah. Viele Dinge müssen bei reinem OpenGL eben selbst implementiert werden, dafür hat man aber auch die volle Kontrolle. Wenn du nicht mehr als einen texturierten Würfel darstellen willst, ist das auch in OpenGL noch recht einfach.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
tkerwel
Anmeldungsdatum: 07.03.2011 Beiträge: 4
|
Verfasst am: 08.03.2011, 13:57 Titel: |
|
|
sooooo...
nach 2 Stunden und den ersten erfahrungen in freebasic und opengl, bin ich ja schon recht stolz auf mich (ohhhjeeehhh eigenlob..)
hab mal das OpenGl tuturial von Eastler vergewaltigt und damit einen Würfel nur über OpenGL hinbekommen.
Dazu die Funktion glBegin GL_QUADS genutzt um die einzelen Seiten abzubilden. klappt wunderbarst...
wo es momentan hapert ist, wie ich nun die Seiten einzeln mit unterschiedlichen Texturen belegen soll.
mal zum Verständnis mit nur einer Seite
glEnable GL_TEXTURE_2D :'Texturieren mit dem grad aktiven Bild einschalten/erlauben
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL) :'texturieren "voll drauf" kein durchsichtig etc
glBindTexture GL_TEXTURE_2D, TexturNummer :'Unser Bild auf der Grafikkarte als aktives setzen
glColor3f 1.0,0.0,0.0 :'Anzeigefarbe (für das Rechteck) auf ROT setzen
glBegin GL_QUADS :'Beginn Beschreibungsliste Objekt Viereck
'fläche unten
glTexCoord2d 0.0, 1.0 : glVertex3f -1.0, -1.0, -1.0 :'die linke obere Ecke des Rechtecks
glTexCoord2d 0.0, 0.0 : glVertex3f +1.0, -1.0, -1.0 :'die linke untere Ecke des Rechtecks
glTexCoord2d 1.0, 0.0 : glVertex3f +1.0, -1.0, +1.0 :'die rechte untere Ecke des Rechtecks
glTexCoord2d 1.0, 1.0 : glVertex3f -1.0, -1.0, +1.0 :'die rechte obere Ecke des Rechtecks
glEnd :'Fertig mit dem Objekt
glDisable GL_TEXTURE_2D :'Texturieren ausschalten
Wie bekomme ich denn nun die zweite Textur in glbindtexture ?
glBindTexture GL_TEXTURE_2D, TexturNummer
glTexImage2D GL_TEXTURE_2D, 0, GL_RGB, 128, 128, 0, GL_RGBA, GL_UNSIGNED_BYTE, DateiImRamPtr+Len(FB.IMAGE)
glTexParameteri GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR
das wäre für eine die ich in TexturNummer geladen habe, wo/wie bekomme ich da eine zweite in den Speicher ? |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 09.03.2011, 11:10 Titel: |
|
|
Na, du wirst doch wohl hoffentlich eine Funktion haben, die dir eine Textur aus einer Datei läd, oder? Damit lädst du einfach eine zweite.
Für jede Textur musst du zuerst einmal eine Variable vom Typ GLuint haben. Das ist dein Handle für die Textur (bei OpenGL auch name genannt). Dann musst du für jede Textur glGenTextures aufrufen, damit sie erzeugt wird. Wenn du ein Array mit Textur-handles hast, kannst du mit einem glGenTextures-Aufruf auch mehrere Texturen erzeugen.
Wenn du dann auch ein wirkliches Bild in die Textur bekommen willst, musst du sie zuerst binden und dann mt glTexImage2D auch Bilddaten reinladen.
Im letzten Teil des Tutorials von Eastler wird das alles von der Funktion BildToOgl übernommen, die dir die Textur automatisch erstellt und dir nur das handle zurückgibt.
Dann renderst du zuerst die erste Seite des Würfels zwischen glBegin und glEnd, dann bindest du die zweite Textur mit glBindTexture und zeichnest die zweite Seite usw.
Aber Vorsicht, glBindTexture muss ausserhalb eines glBegin / glEnd Blockes stehen! _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
tkerwel
Anmeldungsdatum: 07.03.2011 Beiträge: 4
|
Verfasst am: 09.03.2011, 12:42 Titel: |
|
|
@darkinsanity
"Hoffentlich eine Funktion...nööö...."
Danke schön, manchmal sollte man einfach mal bis zum Ende lesen, mit der Funktion hab ich es nun hinbekommen, jetzt kann ich jede Seite mit unterschiedlichen Texturen belegen. Klappt prima.
..
Falls jemand an meinem Beispiel interessiert ist, dann kann ich das ja zur Verfügung stellen. Ich nutze hier die Funktionen von Eastler und eigenen Code. Wäre als zusätzliches Beispiel vielleicht hilfreich, zumal bei Eastler ja nicht ein Objekt mit unterschiedlichen Texturen belegt wird.
..
Dann müßte mir nur jemand erzählen wie das geht mit dem Code hier hochladen.
..
Gruß aus Bremen
Thomas |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|