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

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

31

05.12.2013, 14:52

Danke, ich hatte wirklich noch nie etwas mit Void* Zeigern zu tun. War immer der Meinung das es geschickter ist wenn ich einen festen Typen habe. Gibt es einen bestimmte Art wenn man Void* benutzt?

Dann sollte ich jetzt alles habe um Weiter zu kommen, noch einmal vielen Dank

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

32

05.12.2013, 15:21

In C ist es häufig anzutreffen. Da jeder Pointer implizit zu einem void Zeiger gecastet wird, kann eine Funktion, die void Zeiger annimmt, Zeiger jedes Typs akzeptieren.
So wie qsort: http://www.cplusplus.com/reference/cstdlib/qsort/
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

33

05.12.2013, 15:23

Danke

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

34

12.12.2013, 16:28

Ich habe noch einmal eine Frage und zwar ob es überhaubt möglich ist mit reinem SDL2.0 eine Texture zu laden die Alpha werte hat? Bzw. die Alpha werte zu rendern?
Ich habe diese Code:

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
SDL_Texture* TextureClass::CreateTexture_TGA (char* filename, SDL_Renderer* Renderer)
{
    SDL_Texture* Texture = nullptr;
    SDL_Surface* Surface = nullptr;

    int error, width, height, bpp, imageSize;
    FILE* filePtr;
    unsigned int count;
    TargaHeader targaFileHeader;
    unsigned char* targaImage;


    error = fopen_s(&filePtr, filename, "rb");
    if(error != 0)
    {
        return nullptr;
    }

    count = fread(&targaFileHeader, sizeof(TargaHeader), 1, filePtr);
    if(count != 1)
    {
        return nullptr;
    }

    width = (int)targaFileHeader.width;
    height = (int)targaFileHeader.height;
    bpp = (int)targaFileHeader.bpp;

    if(bpp != 32)
    {
        return nullptr;
    }

    if (bpp == 32)
    {
        imageSize = width * height * 4;
    }

    targaImage = new unsigned char[imageSize];
    if(!targaImage)
    {
        return nullptr;
    }

    count = fread(targaImage, 1, imageSize, filePtr);
    if(count != imageSize)
    {
        return nullptr;
    }
    
    error = fclose(filePtr);
    if(error != 0)
    {
        return nullptr;
    }

    Surface = SDL_CreateRGBSurfaceFrom (targaImage, width, height, 32, 0, 0, 0, 0, 0);
    Texture = SDL_CreateTextureFromSurface (Renderer ,Surface);
    SDL_FreeSurface (Surface);
    return Texture;
}


Wenn es eine gutes Tut dazu vieleicht gibt nehme ich dasu auch dankend.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

35

12.12.2013, 17:30

Ich frage mich, wieso du die Datei selber liest anstattt dies von der SDL bzw. SDL_image machen zu lassen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

36

12.12.2013, 20:02

Die SDL läd nur BMP's die leider keinen Alphakanal haben. Auf der anderen Seite brauche ich nur die TGA funktion von der SDL_Image, sie ist für mich einfach ein bischen zu groß.
Auserdem möchte ich bei der ganzen Aktion ja auch noch etwas lernen :dead:

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

37

12.12.2013, 20:31

PNG kann sie nicht?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

38

12.12.2013, 21:08

PNG kann sie nicht?

SDL alleine, ohne Extension, kann nur Bmp. Aber SDL_image kann TGA, PNG etc.

Volker:
Ich habe jetzt nur einen flüchtigen Blick darauf geworfen, aber du benutzt SDL_CreateRGBSurfaceFrom und nicht SDL_CreateRGBASurfaceFrom. Vllt. solltest du letzteres mal probieren?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

39

12.12.2013, 22:13

Danke da werde ich morgen noch einmal drauf gucken

Volker_Neff

Treue Seele

  • »Volker_Neff« ist der Autor dieses Themas

Beiträge: 249

Wohnort: Hamburg

  • Private Nachricht senden

40

14.12.2013, 13:53

Es scheint so das es in der SDL2 die Funktion SDL_CreateRGBASurfaceFrom nicht gibt. Hat sonst noch jemand eine Idee wie das gehen könnte.

Werbeanzeige