1
0

Add GraphicPBO class

This commit is contained in:
otya128
2016-12-17 17:50:44 +09:00
parent 4eb2f4923d
commit af524152ab
2 changed files with 122 additions and 16 deletions

View File

@@ -25,7 +25,6 @@ class Graphic
{
width = w;
height = h;
initGraphicPages();
}
void getSize(out int w, out int h)
{
@@ -34,14 +33,7 @@ class Graphic
}
void initGraphicPages()
{
if (GRP.length != 0 && GRP[0].glTexture/*TODO:gl texture 0?*/)
{
foreach(g; GRP)
{
g.deleteGL();
}
}
else
if (GRP.length == 0)
{
GRP = new GraphicPage[6];
}
@@ -51,11 +43,6 @@ class Graphic
}
GRP[4] = createGRPF(petitcom.spriteFile);
GRP[5] = createGRPF(petitcom.BGFile);
foreach(g; GRP)
{
g.createTexture(petitcom.renderer, petitcom.textureScaleMode);
g.createBuffer();
}
}
GraphicPage createGRPF(string file)
{
@@ -147,7 +134,6 @@ class Graphic
}
@property void useGRP(int page)
{
glBindFramebufferEXT(GL_FRAMEBUFFER, this.GRP[page].buffer);
usePage[petitcom.displaynum] = page;
}
@property void showGRP(int page)
@@ -409,6 +395,29 @@ class GraphicFBO : Graphic
{
super(p);
}
override void initGraphicPages()
{
foreach(g; GRP)
{
if (g.glTexture)
g.deleteGL();
}
super.initGraphicPages();
foreach(g; GRP)
{
g.createTexture(petitcom.renderer, petitcom.textureScaleMode);
g.createBuffer();
}
}
override @property void useGRP(int page)
{
glBindFramebufferEXT(GL_FRAMEBUFFER, this.GRP[page].buffer);
}
override @property int useGRP()
{
return super.useGRP;
}
//(x+r,y):0°
//(x,y+r):90°
void drawCircle(int x, int y, int r, int startr, int endr, int flag)
@@ -721,3 +730,98 @@ class GraphicFBO : Graphic
gload(x, y, w, h, cast(int[])paint.buffer, 0, copymode);
}
}
class GraphicPBO : Graphic
{
this(PetitComputer p)
{
super(p);
}
override void initGraphicPages()
{
foreach(g; GRP)
{
if (g.glTexture)
g.deleteGL();
}
super.initGraphicPages();
foreach(g; GRP)
{
g.createTexture(petitcom.renderer, petitcom.textureScaleMode);
g.createBuffer();
}
}
override void initVM()
{
}
override void display(int display)
{
}
override void updateVM()
{
}
override void gpset(int page, int x, int y, uint color)
{
}
override void gline(int page, int x, int y, int x2, int y2, uint color)
{
}
override void gbox(int page, int x, int y, int x2, int y2, uint color)
{
}
override void gfill(int page, int x, int y, int x2, int y2, uint color)
{
}
override void gcls(int page, uint color)
{
}
override void gpaint(int page, int x, int y, uint color)
{
}
override void gcircle(int page, int x, int y, int r, uint color)
{
}
override void gcircle(int page, int x, int y, int r, int startr, int endr, int flag, uint color)
{
}
override void gputchr(int page, int x, int y, int text, int scalex, int scaley, uint color)
{
}
override void gputchr(int page, int x, int y, wstring text, int scalex, int scaley, uint color)
{
}
override int gspoit(int page, int x, int y)
{
return 0;
}
override void gsave(int savepage, int x, int y, int w, int h, double[] array, int flag)
{
}
override void gsave(int savepage, int x, int y, int w, int h, int[] array, int flag)
{
}
override void gload(int x, int y, int w, int h, int[] array, int flag, int copymode)
{
}
override void gload(int x, int y, int w, int h, double[] array, int flag, int copymode)
{
}
}

View File

@@ -475,11 +475,13 @@ class PetitComputer
if (grpw != 1024 || grph != 1024)
{
graphic.setSize(1024, 1024);
graphic.initGraphicPages();
}
}
else if (grpw != 512 || grph != 512)
{
graphic.setSize(512, 512);
graphic.initGraphicPages();
}
displaynum = 0;
console.changeDisplay(currentDisplay);
@@ -924,7 +926,7 @@ class PetitComputer
slot = new Slot[5];
keybuffer = new Key[128];
init();
graphic = new GraphicFBO(this);
graphic = new GraphicPBO(this);
keybuffermutex = new Mutex();
grpmutex = new Mutex();
sprite = new Sprite(this);