Du bist nicht angemeldet.

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

Phili

unregistriert

41

15.07.2006, 10:43

@nix da
das ist mir schon bewusst, aber DWORD ist doch unsigned dachte ich(benutz erst seit kurzer zeit diese WORDS, kenn mich da nicht so aus :) )? Und du wolltse doch unsigned :o

Phili

unregistriert

42

15.07.2006, 10:50

ok, hab jetzt noch mal nen bissl Debugging gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ofstream ofs("Protokoll.txt");
    ofs<<"a"<<endl;
    if(FAILED(
    D3DDev.D3DDev->CreateTexture(AufloesungX, AufloesungY, 1, 0, D3DFMT_R8G8B8, D3DPOOL_DEFAULT,
        &HardBuffer, NULL)))
        ofs<<"Fehler"<<endl;
    ofs<<"a"<<endl;
    D3DLOCKED_RECT Rect;
    ofs<<"a"<<endl;
    HardBuffer->LockRect(0, &Rect, NULL, 0);
    ofs<<"a"<<endl;
    memcpy(&Rect, (void*)&SoftBuffer, Groesse);
    ofs<<"a"<<endl;
    HardBuffer->UnlockRect(0);
    ofs<<"a"<<endl;

Ausgabe:

Quellcode

1
2
3
4
a
Fehler
a
a


Das sollte das ganze einfacher machen, warscheinlich hab ich einfach nen falschen Parameter angegeben, bei der CreateTexture-Funktion...

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

43

15.07.2006, 11:18

DWORD => unsigned long => unsigned __int32 => 32 Bit Variable (bis 4GByte Datenraum)

WORD => unsigned short => unsigned __int16 => 16 Bit Variable (bis 64kByte Datenraum)

is schon ein Unterschied ;)

check mal ob dein device(D3DDev) gültig ist

Phili

unregistriert

44

15.07.2006, 13:14

@koschka

Wie gesagt, mir ist bewusst, das es was anderes ist, aber auf der Seite mit der bmp-Formatspezifikation stand eben WORD, also hab ich WORD benutzt...
Die Device ist gültig.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

45

15.07.2006, 14:50

@nix da, nein das der Code geht nur mit quadratischen Bitmaps mit einer Seitenlänge von 2^n ;) . ABER er geht!

@Phil: hast dir überhaupt den Codeausschnitt angeschaut?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Phili

unregistriert

46

15.07.2006, 15:36

@Nox

Naja, mal überflogen, aber ist ja kein großer unterschied zu meinem Code, oder?
Außerdem (korrigier mich, wenn ich falsch liege) lädst du die Dateien nur in ein Array, mein Problem(oder zumindest die stellem wos abstürzt) ist aber das speichern ind ein IDirect3DTexture9 Interface...

Phili

unregistriert

47

15.07.2006, 16:01

Ich glaube, ich habe der Fehler gefunden. Ich hab den Code nen bissl abgeändert und statt dem(eigentlich für mich naheliegenden) D3DFMT_R8G8B8 mal D3DFMT_A8R8G8B8 genommen(hab für den Alphawert einfach den Durchschnitt der Farbwerte genommen). Und siehe da, es funktioniert. Hab allerdings noch nicht nachgeprüft, ob die Textur auch wirklich richtig eingelesen wird, nen Fehler kommt jedenfalls nicht mehr.

Edit:
Nein, zufrüh gefreut, das Programm stürzt jetzt ohne Fehlermeldung bei der LockRect-Funktion ab. :cry:

CW_Kovok

Alter Hase

Beiträge: 836

Wohnort: nähe Bonn

Beruf: Schüler

  • Private Nachricht senden

48

15.07.2006, 21:21

ich habe auch noch eine frage zu Bitmaps ohne D3DX, und zwar zu Mipmaps: Immer wenn ich versuche sie mit erstellen zu lassen schlägt das fehl, und ich kann imo mit geladenen Bildern kein Mipmapping benutzen, ich lade die bitmaps in etwa so wie nix da, kann mir da einer helfen, wollte das nich auch noch von hand machen...
Was es alles gibt, das ich nich brauche - Aristoteles

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

49

16.07.2006, 02:26

C-/C++-Quelltext

1
2
3
4
5
    SoftBuffer=new char[3*AufloesungX*AufloesungY]; 
[...]
   ifs.read((char*)&SoftBuffer[0], 3*AufloesungX*AufloesungY); 
[...]
    memcpy(&Rect, (void*)&SoftBuffer, AufloesungX*AufloesungY*3);

Ich habe ja schon einiges gesehen, aber das ist wirklich ne witzige Art.
Versuch doch mal:

C-/C++-Quelltext

1
2
3
4
5
    SoftBuffer=new char[3*AufloesungX*AufloesungY]; 
[...]
   ifs.read(SoftBuffer, 3*AufloesungX*AufloesungY); 
[...]
    memcpy(&Rect, (void*)SoftBuffer, AufloesungX*AufloesungY*3);
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Phili

unregistriert

50

16.07.2006, 12:10

@Nox
Das hab ich auch jetzt sowieso anders, aber immer noch komisch :lol: .
Ich hab nämlich noch die Alphakomponente reingebracht und sag jezt

C-/C++-Quelltext

1
2
3
4
5
6
for(int i=0; i<AufloesungX*AufloesungY; i++)
    {
        ifs.read((char*)&SoftBuffer[i], 3);
              SoftBuffer[i].Alpha=(SoftBuffer[i].Blue+SoftBuffer[i].Red+SoftBuffer[i].Green)/3;
    }
 


Ist das auch eher problematisch?

Werbeanzeige