KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Bild anzeigen -> C
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hey Leute,
steh wieder mal vor einem Problem...

Hab im SDK die Funktion blitImageToScreen gefunden, und damit sollte es doch (laut Beschreibung usw.) gehen, Bilder auf der PsP anzeigen zu lassen.

Nur hab ich kein blassen Schimmer wie ich das anstellen soll, kann mir vl. jemand ein kleines Beispiel schreiben ?
Erst lädst du das Bild
bild = loadPngImage(".....bild.png");

Dann zeigst du es an mit z.b.
blitImageToScreen(0, 0, 480, 272, bild, 0, 0);

Du kannst auch das Bild mit bin2c umwandeln und direkt in deinen Source Code mit rein nehmen.
wie sieht das dann aus wenn ich es irgendwo auf dem Bilschirm platzieren will ? zb: an x=10; y=10 und Bild ist 10x10

psp_progger :
wie sieht das dann aus wenn ich es irgendwo auf dem Bilschirm platzieren will ? zb: an x=10; y=10 und Bild ist 10x10


Ich bin mir gerade nicht ganz sicher aber ich glaube so müsste das gehen:

blitImageToScreen(int=x, int=y, 10, 10, bild, 0, 0);

Welche Header brauch ich da? Hab momentan den graphics.h...

psp_progger :
Welche Header brauch ich da? Hab momentan den graphics.h...


Puhh da bin ich überfragt, probieren geht über studieren Big Grin

Auf jeden Fall brauchst du die Funktion initGraphics(); Wink

Die pspdisplay.h kanns net sein, da da keine initGraphics Methode bzw blitImageToScreen drinn is; wie gesagt, nur in der graphics.h, aber wenn ich die include wirft er mir nen fehler von wegen nicht vorhanden...

Zitat:
blitImageToScreen(int=x, int=y, 10, 10, bild, 0, 0);


Sorry da lag ich etwas falsch die Position sind die letzten 2 Parameter Gruebel

Parameter 1 und 2: Ab wo da Bild gezeichnet werden soll, in deinem Fall natürlich 0,0

Parameter 3 und 4: Größe wie groß das Bild sein soll, in deinem Fall 10,10

Parameter 5: Das Bild Wink

Paramter 6 und 7: Position X und Y auf dem Bildschirm wohin das Bild gezeichnet werden soll.


Welchen Error bekommst du denn genau ?


Hier hast du mal ein Beispiel:

#include pspkernel.h // Die größer kleiner Zeichen werden hier nicht angezeigt ^^
#include png.h
#include "graphics.h"

Callbacks und der ganze Kram

int main() {
char buffer[300];
Image* bild;
SetupCallbacks();
initGraphics();
sprintf(buffer, "bild.png");
bild = loadImage(buffer);
blitAlphaImageToScreen(0 ,0 ,10 , 10, bild, 0, 0);
flipScreen();
sceKernelSleepThread();
return 0;
}

Funktioniert bei mir einwandfrei Wink

ptest.o: In function `main':
ptest.cSad.text+0x78): undefined reference to `initGraphics'
ptest.cSad.text+0xf4): undefined reference to `loadImage'
ptest.cSad.text+0x118): undefined reference to `blitAlphaImageToScreen'
ptest.cSad.text+0x120): undefined reference to `flipScreen'
collect2: ld returned 1 exit status
make: *** [picTest.elf] Error 1

Code:
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspctrl.h>
#include <pspdisplay.h>
#include <pspsdk.h>
#include <string.h>
#include "graphics.h"
#include <stdlib.h>
#include <png.h>

Callback Kram ;)

int main(int argc, char* argv[])
{
    pspDebugScreenInit();
    SetupCallbacks();
    initGraphics();
    char* startpath = argv[0];
    int l = strlen(startpath);
    int i;
    for(i=l; i > -1; i--)
    {
        if(startpath[i] == '/') { break; }
    }
    startpath[i+1] = 0;
    printf("%s\n", startpath);
    Image* s = loadImage(*startpath+"test.png");
    if (s == NULL) { printf("Fehler beim Laden von test.png!"); }
    else
    {
        blitAlphaImageToScreen(0,0, 480, 272, s, 0,0);
        flipScreen();
    }
    sceKernelSleepThread();
    return 0;
}


Sollte eigendlich funktionieren, das mit dem Pfad geht auf jeden Fall, hab ich schon getestet, und wie man oben sieht, erkennt er die paar Funktionen nicht

vlt. noch Makefile:

Code:
PSPSDK = $(shell psp-config --pspsdk-path)
PSPLIBSDIR = $(PSPSDK)/..
TARGET = picTest
OBJS = ptest.o
LIBS =
EXTRA_TARGETS   = EBOOT.PBP
PSP_EBOOT_TITLE = picTest
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
include $(PSPSDK)/lib/build.mak


//edit: Die graphics.h ist natürlich im selben Verzeichnis wie die .c Datei Wink

psp_progger :
vlt. noch Makefile:

Code:
PSPSDK = $(shell psp-config --pspsdk-path)
PSPLIBSDIR = $(PSPSDK)/..
TARGET = picTest
OBJS = ptest.o
LIBS =
EXTRA_TARGETS   = EBOOT.PBP
PSP_EBOOT_TITLE = picTest
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
include $(PSPSDK)/lib/build.mak


//edit: Die graphics.h ist natürlich im selben Verzeichnis wie die .c Datei Wink


Code:
PSPSDK = $(shell psp-config --pspsdk-path)
PSPLIBSDIR = $(PSPSDK)/..
TARGET = pictest
OBJS = ptest.o graphics.o framebuffer.o
LIBS = -lpspgu -lpng -lz -lm
EXTRA_TARGETS   = EBOOT.PBP
PSP_EBOOT_TITLE = picTest
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
include $(PSPSDK)/lib/build.mak

Die Makefile hatte ich schonmal so, nur eben die neuen Errors ^^:

make: *** No rule to make target `graphics.o', needed by `picTest.elf'. Stop.
Ok, hat jetzt geklappt, hab einfach ausm SDK ein Sample genommen, da waren die graphics.h und fra...h auch noch in ner .c Datei vorhanden, und die konnten dann gelinkt werden

Thx für deine Hilfe =) , bekommst natürlich ein großes Danke inklusive Button Big Grin
Referenz-URLs