Mapping opengl coordinates to pixel coordinates
Posted: Sat Jun 20, 2009 10:21 pm
Code: Select all
int main()
{
//int triangle[3][3] = { {100,100,0}, {60,180,0}, {140,180,0} };
//int triangle[3][3] = { {60,60,0}, {40,80,0}, {80,80,0} };
int triangle[3][3] = { {0,0,0}, {10,0,0}, {0,10,0} };
//int triangle[3][3] = { {0.0f, 1.0f, 0.0f}, {-1.0f,-1.0f, 0.0f}, {1.0f,-1.0f, 0.0f} };
int tricolor[3][3] = { {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f} };
touchPosition touchXY;
//lcdMainOnTop();
lcdMainOnBottom();
//set mode 0, enable BG0 and set it to 3D
videoSetMode(MODE_0_3D);
consoleDemoInit();
// initialize gl
glInit();
// map coords directly to screen
glViewport(0, 0, 255, 191);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 255, 0, 191, -1, 1);
//gluPerspective(70, 256.0 / 192.0, 0.1, 100);
glScalef(1, -1, 1);
glTranslatef(0, -191, 0);
// \map coords directly to screen
//ds specific, several attributes can be set here
glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (0, 0, -1, 0, 0, 1, 0, 1, 0);
float zoom = 0;
int nTexture = 0;
int oldx0 = 0, oldy0 = 0;
int oldx1 = 0, oldy1 = 0;
int mx = 0, my = 0;
int rx = 0, ry = 0;
int screen = 0;
int i = 0, j=0;
while(1)
{
glPushMatrix();
scanKeys();
touchRead(&touchXY);
u16 pressed = keysDown();
u16 keys = keysHeld();
//reset x and y when user touches screen
if(pressed & KEY_TOUCH)
{
oldx1 = touchXY.px;
oldy1 = touchXY.py;
}
//if user drags then grab the delta
if(keys & KEY_TOUCH)
{
mx += touchXY.px - oldx1;
my += touchXY.py - oldy1;
oldx1 = touchXY.px;
oldy1 = touchXY.py;
}
//glTranslatef(mx,my,zoom);
glBegin(GL_TRIANGLES);
//for (int i =
//{
for (j=0; j<3; j++)
{
glColor3f (tricolor[j][0], tricolor[j][1], tricolor[j][2]);
glVertex3f(triangle[j][0], triangle[j][1], triangle[j][2]);
}
//} inttov16(
glEnd();
/*
glBegin(GL_TRIANGLES);
glColor3f(0.0, 0.0, 1.0); //blue
glVertex3f(0, 0, 0);
glColor3f(0.0, 1.0, 0.0); //green
glVertex3f(200, 200, 0);
glColor3f(1.0, 0.0, 0.0); //red
glVertex3f(20, 200, 0);
glEnd();
*/
glPopMatrix(1);
glFlush(0);
swiWaitForVBlank();
}
return 0;
}