Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 07.01.2010, 19:36 Titel: Surface transparent |
|
|
Hab ein Problem und zwar hab ich in meinem game ein fadenkreuz. In dem Bild sind teile transparent, aber das, das transparent sein sollte wird schwarz dargestellt, hier mein code:
CPP: | void CDirect3D::DrawSurface4(void)
{
LPDIRECT3DSURFACE9 lpSurface;
D3DXIMAGE_INFO ImageInfo;
D3DXGetImageInfoFromFile(CURSOR_WEAPON, &ImageInfo);
m_lpD3DDevice->CreateOffscreenPlainSurface(
ImageInfo.Width,
ImageInfo.Height,
D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT,
&lpSurface,
0);
D3DXLoadSurfaceFromFile(lpSurface,
NULL,
NULL,
CURSOR_WEAPON,
NULL,
D3DX_FILTER_NONE,
0,
NULL);
RECT r = { (SCR_WIDTH - ImageInfo.Width) / 2, (SCR_HEIGHT - ImageInfo.Height) / 2, ((SCR_WIDTH - ImageInfo.Width) / 2) + ImageInfo.Width, ((SCR_HEIGHT - ImageInfo.Height) / 2) + ImageInfo.Height };
// Offscreen-Surface kopieren
m_lpD3DDevice->StretchRect(lpSurface,
NULL,
m_lpBackBuffer,
&r,
D3DTEXF_NONE);
lpSurface->Release();
}
|
GRuß Robin |
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 08.01.2010, 01:03 Titel: |
|
|
StretchRect() unterstützt leider keine Alpha-Transparenz.
Wenn du sowas benutzen willst solltest du dir vielleicht mal ID3DXSprite angucken. |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 09.01.2010, 21:51 Titel: |
|
|
ok.. hab kein plan wie das genau geht .... hab damit noch nich gearbeitet
müsste ich da beim code nur was kleines umändern oder muss ich den ganzen code umstellen ??
GRuß Robin |
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 10.01.2010, 20:37 Titel: |
|
|
Ja, das ist schon eine größere Umstellung. Hast du denn nicht das JLI-Buch? |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 11.01.2010, 18:22 Titel: |
|
|
doch des buch hab ich schon, da komm ich aber erst in ner woche ran... des muss ich dann so machen wie bei dem beispiel jli fighter oder ???
GRuß Robin |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 17.01.2010, 18:23 Titel: |
|
|
ok... hab des problem gelößt... nur noch kurz was anderes.. und zwar lass ich grad ne fläche schwarz zeichnen mit DrawSurface wenn ich des menü öffne... jetzt dachte ich mir des kann ich ja mit DrawSprite halb durchsichtig machen... nur funktioniert da des Colorfill nich... was kann ich nehmen ??
GRuß Robin |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 19.01.2010, 16:48 Titel: |
|
|
schon ok... hab ein 1x1 pixel großes bild genommen das ganz schwarz ist, und wenn ich des ausgeb vergrößer ich des halt und machs halb durchsichtig
GRuß Robin |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 31.01.2010, 17:54 Titel: |
|
|
Hi, schon wieder hab ich hier ein kleines problem:
Da bei Sprites kein strech rect geht, hab ich so scale ding drin.. also dass das bild scaliert wird.
So, jetzt hab ich ein bild das bei jeden pc ganz nach Auflösung, größer bzw. kleiner dargestellt wird.
jetzt hab ich das geschrieben:
CPP: | int sy = (SCR_HEIGHT / 8) / 250;
int sx = 1.6 * sy;
D3DXVECTOR2 vScaling(sx, sy);
|
das geht nicht und statt den sx und sy müsste sx = 0.48f und sy = 0.3f rein...(des ist jetzt auf mein laptop bezogen 1024x600)..
Ich schätzte mal das das "int" nicht nach dem Komma rechnet und dann nur rundet oder so..
und in dem fall wird dann 0.48f und 0.3f auf 0 gerundet und es wird kein Bild angezeigt...
hoff das das schnell zu lösen ist
GRuß Robin
Zuletzt bearbeitet von Robin am 01.02.2010, 10:38, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 31.01.2010, 19:01 Titel: |
|
|
Wenn du dir ein bisschen mehr Mühe beim Schreiben geben würdest, wären deine Fragen auch ein bisschen einfacher zu verstehen
Aber mit deiner Vermutung hast du schon ganz recht, du solltest einfach float statt int benutzen .. und da deine SCR_HEIGHT wohl auch ein Integer ist, muss der wohl auch in ein float konvertiert werden. |
|
Nach oben |
|
|
Robin Junior JLI'ler
Alter: 30 Anmeldedatum: 29.10.2008 Beiträge: 73 Wohnort: Inneringen Medaillen: Keine
|
Verfasst am: 01.02.2010, 10:22 Titel: |
|
|
hey, danke !
hab zwar die zwei werte sx und sy schon in float umgesetzt gehabt, aber es ging trotzdem nich... ich hatte halt vergessen die Bildschirm größe (wie du schon sagtest) vergessen auch in flloat umzuwandeln
GRuß Robin |
|
Nach oben |
|
|
|