|
Verfasser |
Nachricht |
~ferra~
Experte
   
Beiträge: 583
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 461
|
C++ Bild anzeigen
Guten Tag,
heute habe ich mal folgendes Problem.
Ich habe versucht ein einfaches Bild auszugeben. Leider war mein Erfolg eher mäßig.
Das ist das Bild welches ich anzeigen wollte:

Das ist das Ergebnis auf dem Bildschirm:

Hier ist mein Code:
#include <pspdisplay.h>
#include <pspctrl.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspgu.h>
#include <stdio.h>
#include "graphics.h"
#define printf pspDebugScreenPrintf
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
PSP_MODULE_INFO("Image Display Program", 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();
sprintf(buffer, "ourImage.png");
ourImage = loadImage(buffer);
if(!ourImage) {
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;
}
Weiß jemand was hier schief gelaufen ist?
MfG[/php]
Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2010 10:34 von ~ferra~.
|
|
13.05.2010 10:33 |
|
|
 |
Chaosduckman
Halbprofi
  
Beiträge: 170
Gruppe: User
Registriert seit: May 2010
Status:
Offline
Danke erhalten: 43
|
RE: C++ Bild anzeigen
Buffer zu klein?
Sry sonst wüsste ich nichts...
|
|
13.05.2010 10:50 |
|
|
 |
~ferra~
Experte
   
Beiträge: 583
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 461
|
RE: C++ Bild anzeigen
Ich habe den Fehler gefunden, danke
|
|
13.05.2010 11:34 |
|
|
 |
flofrucht
Banned
Beiträge: 2.470
Gruppe: Banned
Registriert seit: Jul 2009
Status:
Abwesend
Danke erhalten: 4709
|
RE: C++ Bild anzeigen
Könntest du uns bitte den Fehler auch sagen ?
mfg.flo
|
|
13.05.2010 12:08 |
|
|
 |
~ferra~
Experte
   
Beiträge: 583
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 461
|
RE: C++ Bild anzeigen
Könntest du uns bitte den Fehler auch sagen ?
mfg.flo
Der richtige Code müsste so aussehen:
#include <pspdisplay.h>
#include <pspctrl.h>
#include <pspkernel.h>
#include <pspdebug.h>
#include <pspgu.h>
#include <stdio.h>
#include "graphics.h"
#define printf pspDebugScreenPrintf
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
PSP_MODULE_INFO("Image Display Program", 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();
sprintf(buffer, "ourImage.png");
ourImage = loadImage(buffer);
if(!ourImage) {
printf("laden des Bildes fehlgeschlagen!\n");
} else {
int x = 0;
int y = 0;
sceDisplayWaitVblankStart();
blitAlphaImageToScreen(0, 0, 480, 272, ourImage, x, y);
flipScreen();
}
sceKernelSleepThread();
return 0;
}
MfG ferra
|
|
13.05.2010 12:49 |
|
Folgende User bedanken sich: |
 |
flofrucht
Banned
Beiträge: 2.470
Gruppe: Banned
Registriert seit: Jul 2009
Status:
Abwesend
Danke erhalten: 4709
|
RE: C++ Bild anzeigen
ahh Vielen Dank,bitte gewöhne dir immer gleich an die Lösung auch zu posten 
Kann der Thread geclosed werden ?
mfg.flo
|
|
13.05.2010 12:51 |
|
|
 |
~ferra~
Experte
   
Beiträge: 583
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 461
|
RE: C++ Bild anzeigen
ahh Vielen Dank,bitte gewöhne dir immer gleich an die Lösung auch zu posten 
Kann der Thread geclosed werden ?
mfg.flo
Ja, kann er. danke
MfG ferra
|
|
13.05.2010 13:01 |
|
|
 |
~ferra~
Experte
   
Beiträge: 583
Gruppe: User
Registriert seit: Apr 2010
Status:
Offline
Danke erhalten: 461
|
RE: C++ Bild anzeigen
Guten Morgen,
zum Glück ist hier noch offen.
Eine Frage habe ich noch bezgl der Bilder.
Wie lösche ich den einzelne Bilder aus dem Speicher. Ansonsten würde ja die PSP irgendwann freezen.
MfG ferra
|
|
24.05.2010 08:38 |
|
|
 |
flofrucht
Banned
Beiträge: 2.470
Gruppe: Banned
Registriert seit: Jul 2009
Status:
Abwesend
Danke erhalten: 4709
|
RE: C++ Bild anzeigen
Hmm ich kenne mich zwar nicht so gut aus aber per MemoryClean warsch.
schau mal auf psp.jim.sh.
sry das ich nicht geclosed habe der Thread ist iwie.untergegangen..
mfg.flo
|
|
24.05.2010 17:19 |
|
|
 |
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: C++ Bild anzeigen
Falls noch Interesse besteht XD
Mit clearImage(Color color, Image* image); kann man ein einzelnes Bild löschen 
Beispiel:
#include ...
....
#define black 0xFF000000
...code...
Image* sample;
sample = loadImage("sample.png");
...code...
if(pad.Buttons & PSP_CTRL_CROSS)
{
clearImage(black, sample);
}
...code...
Hoffe du hast es verstanden, wenn du das gemeint hast 
PS: Ich weis das der Thread 13.05.2010 ist, aber vielleicht hat ja einer das Problem
|
|
18.04.2011 22:29 |
|
|
 |
Ceikor
Ex-Developer
   
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: C++ Bild anzeigen
Falls noch Interesse besteht XD
Mit clearImage(Color color, Image* image); kann man ein einzelnes Bild löschen 
LOL oh man du hast keine ahnung 
Du überschreibst nur den speicher und gibst ihn nicht frei, da kannst duch auch gleich dem pointer sampler ein neues bild zuweisen dann kannst dir das sparen ist nähmlich völlig sinnlos was du da geschrieben hast -.-
Aber naja pspking halt
|
|
20.04.2011 12:10 |
|
Folgende User bedanken sich: |
 |
HacKmaN
Ex-Developer

Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C++ Bild anzeigen
Falls noch Interesse besteht XD
Mit clearImage(Color color, Image* image); kann man ein einzelnes Bild löschen 
LOL oh man du hast keine ahnung 
Du überschreibst nur den speicher und gibst ihn nicht frei, da kannst duch auch gleich dem pointer sampler ein neues bild zuweisen dann kannst dir das sparen ist nähmlich völlig sinnlos was du da geschrieben hast -.-
Aber naja pspking halt 
Geb dir Recht... Speicherverschwendung pur
|
|
20.04.2011 12:13 |
|
Folgende User bedanken sich: |
 |
dark-awesome
stehn
Beiträge: 3.204
Gruppe: Banned
Registriert seit: Jul 2010
Status:
Offline
Danke erhalten: 2192
|
RE: C++ Bild anzeigen
Ich hab ihn in der Sache halt falsch verstanden. Sorry aber deswegen steht dort ja "wenn du das gemeint hast"
|
|
20.04.2011 12:22 |
|
|
 |
Ceikor
Ex-Developer
   
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: C++ Bild anzeigen
Wie lösche ich den einzelne Bilder aus dem Speicher.
Antwort von stehn
Mit clearImage(Color color, Image* image); kann man ein einzelnes Bild löschen 
Also entweder kannst du nicht lesen oder was eher hinkommt du hast keine ahnung. Den du schreibst ja es löscht macht es aber definitif nicht^^
Dieser Beitrag wurde zuletzt bearbeitet: 20.04.2011 12:29 von Ceikor.
|
|
20.04.2011 12:27 |
|
Folgende User bedanken sich: |
 |
~Hook~
C-Coder
    
Beiträge: 1.706
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 1129
|
RE: C++ Bild anzeigen
ist doch egal, stehn ist ja kein profi, woher soll er wissen dass man so mehr speicher verbraucht?
Man muss ledeglich dem Zeiger ein neues Bild zuweißen und dass auch definieren...
<?php echo 'Signatur'; ?>
|
|
20.04.2011 13:14 |
|
Folgende User bedanken sich: |
 |
|