Сообщение от freecod
А можно пример не "консольного" программирования? Как например залить половину экрана белым, а другую половину - жёлтым? Простенький пример, если можно.
|
Накатал на вскидку, даже не проверял(может ошибся где-то), но примерно так -
Тока цвета красный и синий, белый соответственно в RGB будет 255/255/255, ну жёлтый сам сделаешь.
#include <pspdisplay.h>
#include <pspkernel.h>
u16 *VRAM=(void *)(0x44000000);
#define BUF_WIDTH (512)
#define SCR_WIDTH (480)
#define SCR_HEIGHT (272)
#define PIXEL_SIZE (1)
#define FRAME_SIZE (BUF_WIDTH * SCR_HEIGHT * PIXEL_SIZE)
PSP_MODULE_INFO("grsamp", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);
void InitializeGraphics(int mode)
{
sceDisplaySetMode(mode,SCR_WIDTH,SCR_HEIGHT);
sceDisplaySetFrameBuf(VRAM,BUF_WIDTH,1,1);
}
void PlotPixel(int x,int y,int r,int g,int b)
{
if(x<0||x>479||y<0||y>271||r<0||r>255||g<0||g>255||b<0||b>255)
{
return;
}
int color=((b>>3)<<10) | ((g>>3)<<5) | (r>>3) | 0x8000;
u16 *address=VRAM+((((512)*1)*y)+x);
*address=color;
}
int main(int argc, char* argv[]) {
int ix, iy;
InitializeGraphics(1);
sceDisplayWaitVblankStart();
for (iy=0; iy<=271; iy++)
for (ix=0; ix<=240; ix++) PlotPixel (ix,iy, 255, 0, 0);
for (iy=1; iy<=272; iy++)
for (ix=241; ix<=479; ix++) PlotPixel (ix,iy, 0, 0, 255);
sceKernelDelayThread(100000*10);
sceKernelExitGame();
return 0;
}
мейкфайл -
TARGET = grsamp
OBJS = main.o
INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
BUILD_PRX = 1
LIBDIR =
LIBS =
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Graph example
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak