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
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
operator DWORD () const { return ((a >= 1.0f ? 255 : a <= 0.0f ? 0 : (DWORD)a) << 24) | ((r >= 1.0f ? 255 : r <= 0.0f ? 0 : (DWORD)r) << 16) | ((g >= 1.0f ? 255 : g <= 0.0f ? 0 : (DWORD)g) << 8) | (b >= 1.0f ? 255 : b <= 0.0f ? 0 : (DWORD)b); } |
C-/C++-Quelltext |
|
1 2 |
MGE_INFO("cColor with D3DCOLOR_ARGB: %X", D3DCOLOR_ARGB((int)cColor->a, (int)cColor->r, (int)cColor->g, (int)cColor->b)); MGE_INFO("cColor with (DWORD): %X", (DWORD)cColor); |
Zitat
cColor with D3DCOLOR_ARGB: 0
cColor with (DWORD): 38098
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
/////////////////////////////////////////////////////////////////////////////// // ___ ___ ___ // // /__/\ / /\ / /\ // // | |::\ / /:/_ / /:/_ // // | |:|:\ / /:/ /\ / /:/ /\ // // __|__|:|\:\ / /:/_/::\ / /:/ /:/_ // // /__/::::| \:\ /__/:/__\/\:\ /__/:/ /:/ /\ // // \ \:\~~\__\/ \ \:\ /~~/:/ \ \:\/:/ /:/ // // \ \:\ \ \:\ /:/ \ \::/ /:/ // // \ \:\ \ \:\/:/ \ \:\/:/ // // \ \:\ \ \::/ \ \::/ // // \__\/ \__\/ \__\/ // // // // MyGameEngine - Copyright by *** 2008 // // // // mgeColor.h - contains functions for color operations // /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////// // include guard #pragma once #include "MyGameEngine.h" ///////////////////////////////////////////////// // defines #define MGE_COLOR_ARGB(a,r,g,b) (new mgeColor((BYTE)r, (BYTE)g, (BYTE)b, (BYTE)a)) #define MGE_COLOR_XRGB(r,g,b) (new mgeColor((BYTE)r, (BYTE)g, (BYTE)b)) class mgeColor { public: // red, green, blue, alpha union { struct { float a; float r; float g; float b; }; struct { float fAlpha; float fRed; float fGreen; float fBlue; }; float afColor[4]; }; // constructor mgeColor();// {}; mgeColor(const mgeColor& c) : r(c.r), g(c.g), b(c.b), a(c.a) {}; mgeColor(const float f) : r(f), g(f), b(f), a(f) {}; mgeColor(const float _r, const float _g, const float _b) : r(_r), g(_g), b(_b), a(1.0f) {}; mgeColor(const float _r, const float _g, const float _b, const float _a) : r(_r), g(_g), b(_b), a(_a) {}; mgeColor(const BYTE _r, const BYTE _g, const BYTE _b) : r((float)(_r)/255), g((float)(_g)/255), b((float)(_b)/255), a(1.0f) {}; mgeColor(const BYTE _r, const BYTE _g, const BYTE _b, const BYTE _a) : r((float)(_r)/255), g((float)(_g)/255), b((float)(_b)/255), a((float)(_a)/255) {}; // casting operator operator DWORD () const { return ((a >= 1.0f ? 255 : a <= 0.0f ? 0 : (DWORD)a) << 24) | ((r >= 1.0f ? 255 : r <= 0.0f ? 0 : (DWORD)r) << 16) | ((g >= 1.0f ? 255 : g <= 0.0f ? 0 : (DWORD)g) << 8) | (b >= 1.0f ? 255 : b <= 0.0f ? 0 : (DWORD)b); } operator float* () { return (float*)afColor; } }; |
C-/C++-Quelltext |
|
1 |
D3DX_ARGB (a,r,g,b); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
typedef struct D3DCOLORVALUE { float r; float g; float b; float a; } D3DCOLORVALUE, *LPD3DCOLORVALUE; |
Zitat von »"TheWinner"«
C-/C++-Quelltext
1 2 #define MGE_COLOR_ARGB(a,r,g,b) (new mgeColor((BYTE)r, (BYTE)g, (BYTE)b, (BYTE)a)) #define MGE_COLOR_XRGB(r,g,b) (new mgeColor((BYTE)r, (BYTE)g, (BYTE)b))
Zitat von »"tnecniv"«
Zitat von »"TheWinner"«
C-/C++-Quelltext
1 2 #define MGE_COLOR_ARGB(a,r,g,b) (new mgeColor((BYTE)r, (BYTE)g, (BYTE)b, (BYTE)a)) #define MGE_COLOR_XRGB(r,g,b) (new mgeColor((BYTE)r, (BYTE)g, (BYTE)b))
hmm..macht man das so? besteht da nicht die Gefahr ne menge speichermüll zu produzieren? wundert mich nur ein wenig... warum lässt du das new nicht weg?
Gruß
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
operator DWORD () const { return (((a >= 1.0f ? 255 : a <= 0.0f ? 0 : (DWORD)a*255) << 24) | ((r >= 1.0f ? 255 : r <= 0.0f ? 0 : (DWORD)r*255) << 16) | ((g >= 1.0f ? 255 : g <= 0.0f ? 0 : (DWORD)g*255) << 8) | (b >= 1.0f ? 255 : b <= 0.0f ? 0 : (DWORD)b*255)); } |
Administrator
Zitat von »"Zera"«
du must erst deine floats vom Bereich 0-1 auf den bereich 0-255 erweitern, bevor du sie castest.
C-/C++-Quelltext
1 2 3 4 5 6 operator DWORD () const { return (((a >= 1.0f ? 255 : a <= 0.0f ? 0 : (DWORD)a*255) << 24) | ((r >= 1.0f ? 255 : r <= 0.0f ? 0 : (DWORD)r*255) << 16) | ((g >= 1.0f ? 255 : g <= 0.0f ? 0 : (DWORD)g*255) << 8) | (b >= 1.0f ? 255 : b <= 0.0f ? 0 : (DWORD)b*255)); }
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
mgeColor* c1 = new mgeColor((BYTE)0, 0, 63); // dunkelblau MGE_INFO("(DWORD)c1: %X",(DWORD)c1); // funktioniert nicht MGE_INFO("(DWORD)*c1: %X,(DWORD)*c1); // funktioniert mgeColor c2((BYTE)0, 0, 63); // dunkelblau MGE_INFO("(DWORD)c2: %X", c2); // funktioniert |
Werbeanzeige