JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=f8bc6cac0e5d05679663e02a87fdaac9Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

union Frage

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 14.10.2004, 14:54    Titel: union Frage Antworten mit Zitat

Also, ich hab das im Quellcode irgendwo geshene und wollte es nacmachen:
Code:

struct SimpleVertex
{
   union
   {
      struct
      {
         float x, y, z;
      };
      D3DXVECTOR3 vPosition;
   };
   D3DXVECTOR3 vNormal;
   D3DCOLOR Color;
};

error C2620: Union '__unnamed' : Element 'vPosition' besitzt benutzerdefinierten Konstruktor oder bedeutenden Standardkonstruktor

Ich wollte das so machen, da ich eignelich auf Vektoren umsteigen wollte statt einzelne Variablen, aber nich alles ändern wollte, und s isses doch auch eleganer wenn mans unter beiden Namen ansprechen kann.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 14.10.2004, 15:46    Titel: Antworten mit Zitat

Das sind aber vollkommen unterschiedliche Situationen. Das geht vom Speicherzugriff nicht, denn woher soll der Kompiler wissen das simplevertex.x das gleiche ist wie simplevertex.vPosition.x und nicht sogar simplevertex.vPosition(...)
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 14.10.2004, 15:57    Titel: Antworten mit Zitat

tja, äh ich habe davon keine Ahnung, aber das heir geht ganz offensichtlich:
Code:

class TRIBASE_API tbColor
{
public:
   // Variablen
   union
   {
      struct
      {
         float r;   // Rot-, Gruen-, Blau- und Alphakomponente
         float g;
         float b;
         float a;
      };

      struct
      {
         float fRed;      // Rot-, Gruen-, Blau- und Alphakomponente
         float fGreen;
         float fBlue;
         float fAlpha;
      };

      float         c[4];         // Array der Komponenten
      D3DCOLORVALUE   D3DColorValue;   // Farbe als D3DCOLORVALUE
   };
 //hier käme noch ganz viel...
}

Und so wie es da ist, wollte ich es halt auch machen. Man kann entweder c[0] oder fRed oder r schreiben, das ist alles im Prinzip dasselbe.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 14.10.2004, 15:59    Titel: Antworten mit Zitat

Da können auch alle elemente an der gleichen speicherposition aufbewahrt werden, auch die D3DCOLORVALUE

Code:
typedef struct _D3DCOLORVALUE {
    float r;
    float g;
    float b;
    float a;
} D3DCOLORVALUE;


Wenn nun aber ne Struktur oder klasse mit ner Funktion oder ähnlichem auftaucht dann geht das nicht mehr.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 14.10.2004, 18:51    Titel: Antworten mit Zitat

achso, das geht also mit Strukturen und Variablen aber nicht mit Klassen?
Muss ich dann statt D3DXVECTRO3 lieber D3DVECTOR nehmen? (So isses nämlich in der Vektor Klasse der Tribaseengine gemacht)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 14.10.2004, 18:58    Titel: Re: union Frage Antworten mit Zitat

So vieleicht.

Code:

struct SimpleVertex
{
   union
   {
      struct
      {
         D3DXVECTOR x, y, z;
      };
      D3DXVECTOR3 vPosition;
   };
   D3DXVECTOR3 vNormal;
   D3DCOLOR Color;
};

_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Kronos
Senior JLI'ler



Anmeldedatum: 19.03.2004
Beiträge: 290

Medaillen: Keine

BeitragVerfasst am: 02.01.2005, 20:05    Titel: Antworten mit Zitat

Sorry, dass ich den Thread jetzt nochmal ausgrabe, hab aber bezüglich Fallens Codechunk ne Frage:

Wo wäre der Unterschied zwischen

Code:

typedef struct _D3DCOLORVALUE {
    float r;
    float g;
    float b;
    float a;
} D3DCOLORVALUE;  // diesem

// und

struct _D3DCOLORVALUE {
    float r;
    float g;
    float b;
    float a;
} D3DCOLORVALUE; // jenem


Wieso wird die struct ge-type-def-t?
Ich habe diese typedef structs neulich wieder im Quake1,2 und 3 source gelesen und frage mich immernoch, wieso die ge-typedef-t werden (obwohl es eigentlich eine andere frage bzgl. der structs im quake source war, aber das ist ein anderes thema..).

Edit: War das nicht auch so, wenn man sie typedef-t, dass man dann keinen Namen verwenden muss, für 'ne neue structurinstanz? (weiß nicht, wie man das bei structs nennt)
Man könnte ja dank dem typedef den Namen der struct weglassen und trotzdem mit D3DCOLORVALUE eine Instanz (..) erzeugen..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zyrian
Super JLI'ler



Anmeldedatum: 30.08.2003
Beiträge: 321
Wohnort: Essen
Medaillen: Keine

BeitragVerfasst am: 02.01.2005, 20:53    Titel: Antworten mit Zitat

das ist ne alte C-Schreibweise iirc
braucht man heute nicht mehr zu machen bei structs...
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kronos
Senior JLI'ler



Anmeldedatum: 19.03.2004
Beiträge: 290

Medaillen: Keine

BeitragVerfasst am: 02.01.2005, 21:05    Titel: Antworten mit Zitat

Ayo, gut, soweit war ich auch schon Smile

Danke trotzdem.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 02.01.2005, 21:12    Titel: Antworten mit Zitat

Kronos
*hust* Ich dachte den Unterschied hätte ich Dir gesagt *kratz* Wink
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kronos
Senior JLI'ler



Anmeldedatum: 19.03.2004
Beiträge: 290

Medaillen: Keine

BeitragVerfasst am: 03.01.2005, 14:00    Titel: Antworten mit Zitat

Nunja, du hast was von "Nach C96 Standard verwendet das keiner mehr" gefaselt und naja, ich dachte, es gäbe noch 'nen anderen Unterschied, aber wenn die D3D Programmierer solche "Schlampen" sind.. Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 03.01.2005, 15:03    Titel: Antworten mit Zitat

Das hat nix mit Schlampigkeit zu tun sondern mit Abwärtskompatibilität.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum