|
Verfasser |
Nachricht |
3m!n
Legende
Beiträge: 1.652
Gruppe: User
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 951
|
[TuT] C Bilder anzeigen....
Hallo,
in diesem Tutorial zeige ich euch,wie ihr Bilder in C anzeigt.
Vorraussetzungen
- PSPSDK
- Grundwissen in C
- Ein kluges Köpfchen
Tutorial
Als erstes kommen die Header-Files:
#include <pspdisplay.h>
#include <pspctrl.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspgu.h>
#include <png.h>
#include <stdio.h>
#include "graphics.h"
Danach definieren wir die Funktionen,um das eintippen leichter zumachen
#define printf pspDebugScreenPrintf
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
Danach folgt die Module Informationen:
PSP_MODULE_INFO("Image Tutorial", 0, 1, 1);
Das ganze läuft nach folgendem Schema:
PSP_MODULE_INFO("MODULE_INFO",MODE,VERSION,VERSION
und danach folgen die Callbacks:
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
Danach folgt der Main-Code:
int main() {
char buffer[200];
Image* ourImage;
pspDebugScreenInit();
SetupCallbacks();
initGraphics();
ourImage = loadImage("ourImage.png");
if(!ourImage) {
//laden des Bildes ist fehlgeschlagen
printf("laden des Bildes fehlgeschlagen!\n");
{ else {
int x = 0;
int y = 0;
sceDisplayWaitVblankStart();
while(x<480) {
while(y<272) {
blitAlphaImageToScreen(0 ,0 ,32 , 32, ourImage, x, y);
y += 32;
}
Der Rest sollte kein Problem sein.
Thanks to PSP-Programming.com
Werde noch viel viel mehr hinzufügen,also keine panik
mfg
emink123
|
|
01.04.2011 17:18 |
|
Folgende User bedanken sich: |
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] C Bilder anzeigen....
Heute ist dein großer TuT Tag stimmts
Aber Thanks weiter so
Dieser Beitrag wurde zuletzt bearbeitet: 01.04.2011 17:21 von dark-awesome.
|
|
01.04.2011 17:21 |
|
|
|
3m!n
Legende
Beiträge: 1.652
Gruppe: User
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 951
|
RE: [TuT] C Bilder anzeigen....
Folgen noch welche,
als mein Router schrott war,hatte ich keine anderen Hobbys,
und habe TuTs geschrieben
|
|
01.04.2011 17:22 |
|
Folgende User bedanken sich: |
|
_Kai_
be linux
Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009
Status:
Abwesend
Danke erhalten: 2809
|
RE: [TuT] C Bilder anzeigen....
Wirklich sehr ausführlich [ /ironie]
while(x<480) {
while(y<272) {
blitAlphaImageToScreen(0 ,0 ,32 , 32, ourImage, x, y);
y += 32;
}
Hättest wenigstens beschreiben können was du hier vor hast. Klar du füllst das Display mit einer Textur aus 32x32 Pixel Kacheln. Aber welcher Anfänger kommt da schon drauf ?
PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
|
|
01.04.2011 18:18 |
|
Folgende User bedanken sich: |
|
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: [TuT] C Bilder anzeigen....
Ähm wenn ich verbessern darf
Du hast den Code nicht ganz voll endet
Wie schon glaub ich PSP-Hilfe angedeutet hat xD
Das ende müsste eigentlich so aussehen:
while(x<480) { while(y<272) { blitAlphaImageToScreen(0 ,0 ,32 , 32, ourImage, x, y); y += 32; } x += 32; y = 0; } flipScreen(); } sceKernelSleepThread(); return 0; }
Also der ganze Code dann so:
#include <pspdisplay.h> #include <pspctrl.h> #include <pspkernel.h> #include <pspdebug.h> #include <pspgu.h> #include <png.h> #include <stdio.h> #include "graphics.h"
#define printf pspDebugScreenPrintf #define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
PSP_MODULE_INFO("Image Tutorial", 0, 1, 1);
//------------------------------------------------------------------------------
/* Exit callback */ int exit_callback(int arg1, int arg2, void *common) { sceKernelExitGame(); return 0; }
/* Callback thread */ int CallbackThread(SceSize args, void *argp) { int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0; }
/* Sets up the callback thread and returns its thread id */ int SetupCallbacks(void) { int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0); if(thid >= 0) { sceKernelStartThread(thid, 0, 0); }
return thid; }
//------------------------------------------------------------------------------
int main() { char buffer[200]; Image* ourImage; pspDebugScreenInit(); SetupCallbacks(); initGraphics(); ourImage = loadImage("our-image.png"); if(!ourImage) { //laden des Bildes ist fehlgeschlagen printf("laden des Bildes fehlgeschlagen!\n"); } else { int x = 0; int y = 0; sceDisplayWaitVblankStart(); while(x<480) { while(y<272) { blitAlphaImageToScreen(0 ,0 ,32 , 32, ourImage, x, y); y += 32; } x += 32; y = 0; } flipScreen(); } sceKernelSleepThread(); return 0; }
Und das makefile ist auch für einen Anfänger nicht so klar
Als Anfänger weis man nicht welche Libs und Objs man brauch ^^
Also so sollte es aussehen:
TARGET = our-image_datei OBJS = main.o graphics.o framebuffer.o
CFLAGS = -O2 -G0 -Wall CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti ASFLAGS = $(CFLAGS)
LIBDIR = LIBS = -lpspgu -lpng -lz -lm LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP PSP_EBOOT_TITLE = Image
PSPSDK=$(shell psp-config --pspsdk-path) include $(PSPSDK)/lib/build.mak
Außer dem brauch man noch die graphics.c und den graphics.h
Download
Edit: Die einfachste Methode das Bild anzuzeigen wäre:
int main() { Image* testpng; pspDebugScreenInit(); SetupCallbacks(); initGraphics(); testpng = loadImage("testpng.png");
if(!testpng) { //laden des Bildes ist fehlgeschlagen printf("laden des Bildes fehlgeschlagen!\n"); } else { sceDisplayWaitVblankStart(); blitAlphaImageToScreen(0 ,0 ,480 , 272, testpng, 0, 0); flipScreen(); }
sceKernelSleepThread(); return 0; }
Was ich glaube für Anfänger besser zu verstehen ist
EDIT:
Und noch was du hattest ja noch erklären können das es blitAlphaImageToScreen() und blitImageToScreen() gibt und was der unterschied zwischen beiden ist.
Das blitAlphaImageToScreen() dafür da ist wenn man Bilder mit Transparenz ausgeben will.
Und blitImageToScreen() für Bilder ohne Transparenz ist.
Das finde ich auch nicht ganz unwichtig
Dieser Beitrag wurde zuletzt bearbeitet: 09.04.2011 17:55 von dark-awesome.
|
|
09.04.2011 02:48 |
|
Folgende User bedanken sich: |
|
PSP_Joker
King
Beiträge: 2.537
Gruppe: User
Registriert seit: Apr 2009
Status:
Offline
Danke erhalten: 2814
|
RE: [TuT] C Bilder anzeigen....
Ich hab dir ja vorher schon nicht geglaubt, dass du einen HEN oder überhaupt ansatzweise was coden kannst, aber nach dem "Tutorial" bin ich mir 100% sicher, dass du nichts kannst.
Also das Schönste, was wir tun können, ist tanzen.
|
|
17.04.2011 18:12 |
|
Folgende User bedanken sich: |
|
3m!n
Legende
Beiträge: 1.652
Gruppe: User
Registriert seit: Aug 2010
Status:
Offline
Danke erhalten: 951
|
RE: [TuT] C Bilder anzeigen....
Thanks to PSP-Programming.com
Hab es frei übersetzt,
erstmal denken,dann sprechen bzw. schreiben !
|
|
17.04.2011 18:14 |
|
|
|
PSP_Joker
King
Beiträge: 2.537
Gruppe: User
Registriert seit: Apr 2009
Status:
Offline
Danke erhalten: 2814
|
RE: [TuT] C Bilder anzeigen....
Hallo,
in diesem Tutorial zeige ich euch,wie ihr Bilder in C anzeigt.
Das ist nicht mal ansatzweise ein Tutorial. Du sagst einfach, was in den Files ist. Und dazu ist da auch 0 von dir, sondern einfach was aus der Datei was rausgesucht und eingefügt. Den Filenamen und den Inhalt kann sich jeder denken. Tolles Tutorial. Und "Thanks to XY" ist total der Hinweis darauf, dass du es quasi nur geklaut hast, Respekt. Du kannst ja nicht mal erklären, was da passiert. Highskiller.
Also das Schönste, was wir tun können, ist tanzen.
|
|
17.04.2011 18:38 |
|
Folgende User bedanken sich: |
|
_Kai_
be linux
Beiträge: 2.680
Gruppe: Programmierung
Registriert seit: Nov 2009
Status:
Abwesend
Danke erhalten: 2809
|
RE: [TuT] C Bilder anzeigen....
Da muss ich PSP_Joker schon Recht geben, das ist genau der Code aus dem Example. Außerdem ist die Erklärung ein wenig mager
"Danach folgt der Main-Code .... Der Rest sollte kein Problem sein"
PSVita mit 16gb Memorystick und PlayStation+
+ Uncharted + Army Corps of Hell + Assassins Creed
+ NFS Most Wanted + COD Black Ops + Resistance
+ Everybodys Golf + Modnation Racers
Für PSN ID => PN
|
|
17.04.2011 18:41 |
|
Folgende User bedanken sich: |
|