1
0

Implement GSPOIT

This commit is contained in:
otya128
2016-12-12 22:34:25 +09:00
parent e51b8fa282
commit ab4dcc491f
2 changed files with 19 additions and 4 deletions

View File

@@ -534,6 +534,10 @@ class BuiltinFunction
throw new TypeMismatch("GPUTCHR", 3);
}
}
static int GSPOIT(PetitComputer p, int x, int y)
{
return p.graphic.gspoit(p.graphic.useGRP, x, y);
}
static void BGMPLAY(PetitComputer p, int music)
{
}

View File

@@ -429,8 +429,10 @@ class Graphic
{
SDL_GL_MakeCurrent(petitcom.window, petitcom.contextVM);
glAlphaFunc(GL_GEQUAL, 0.1f);
glEnable(GL_ALPHA_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_TEXTURE_2D);
glDisable(GL_ALPHA_TEST);
glDisable(GL_DEPTH_TEST);
}
void draw2()
{
@@ -451,9 +453,6 @@ class Graphic
GLint old;
int oldpage = drawMessageQueue[0].page;
glBindFramebufferEXT(GL_FRAMEBUFFER, this.GRP[oldpage].buffer);
glDisable(GL_TEXTURE_2D);
glDisable(GL_ALPHA_TEST);
glDisable(GL_DEPTH_TEST);
//glAlphaFunc(GL_GEQUAL, 0.0);
void chScreen(int x, int y, int w, int h)
@@ -559,6 +558,9 @@ class Graphic
break;
default:
}
glDisable(GL_TEXTURE_2D);
glDisable(GL_ALPHA_TEST);
glDisable(GL_DEPTH_TEST);
}
DrawMessage[] drawMessageQueue = new DrawMessage[1];
int drawMessageLength;
@@ -675,6 +677,15 @@ class Graphic
dm.display = cast(byte)petitcom.displaynum;
sendDrawMessage(dm);
}
int gspoit(int page, int x, int y)
{
glBindFramebufferEXT(GL_FRAMEBUFFER, this.GRP[page].buffer);
int ui;
//flush
updateVM();
glReadPixels(x, y, 1, 1, GRP[page].textureFormat, GL_UNSIGNED_BYTE, &ui);
return ui;
}
int gprio;
void render()
{