fixed view matrix; im2d UV
This commit is contained in:
@ -29,12 +29,14 @@ printScreen(const char *s, float32 x, float32 y)
|
||||
curVert = 0;
|
||||
curIndex = 0;
|
||||
float32 u, v, du, dv;
|
||||
float recipZ;
|
||||
|
||||
cam = (Camera*)engine->currentCamera;
|
||||
vert = &vertices[curVert];
|
||||
ix = &indices[curIndex];
|
||||
du = curfont->glyphwidth/(float32)curfont->tex->raster->width;
|
||||
dv = curfont->glyphheight/(float32)curfont->tex->raster->height;
|
||||
recipZ = 1.0f/cam->nearPlane;
|
||||
while(c = *s){
|
||||
if(c >= curfont->numglyphs)
|
||||
c = 0;
|
||||
@ -45,40 +47,40 @@ printScreen(const char *s, float32 x, float32 y)
|
||||
vert->setScreenY(y);
|
||||
vert->setScreenZ(rw::im2d::GetNearZ());
|
||||
vert->setCameraZ(cam->nearPlane);
|
||||
vert->setRecipCameraZ(1.0f/cam->nearPlane);
|
||||
vert->setRecipCameraZ(recipZ);
|
||||
vert->setColor(255, 255, 255, 255);
|
||||
vert->setU(u);
|
||||
vert->setV(v);
|
||||
vert->setU(u, recipZ);
|
||||
vert->setV(v, recipZ);
|
||||
vert++;
|
||||
|
||||
vert->setScreenX(x+curfont->glyphwidth);
|
||||
vert->setScreenY(y);
|
||||
vert->setScreenZ(rw::im2d::GetNearZ());
|
||||
vert->setCameraZ(cam->nearPlane);
|
||||
vert->setRecipCameraZ(1.0f/cam->nearPlane);
|
||||
vert->setRecipCameraZ(recipZ);
|
||||
vert->setColor(255, 255, 255, 255);
|
||||
vert->setU(u+du);
|
||||
vert->setV(v);
|
||||
vert->setU(u+du, recipZ);
|
||||
vert->setV(v, recipZ);
|
||||
vert++;
|
||||
|
||||
vert->setScreenX(x);
|
||||
vert->setScreenY(y+curfont->glyphheight);
|
||||
vert->setScreenZ(rw::im2d::GetNearZ());
|
||||
vert->setCameraZ(cam->nearPlane);
|
||||
vert->setRecipCameraZ(1.0f/cam->nearPlane);
|
||||
vert->setRecipCameraZ(recipZ);
|
||||
vert->setColor(255, 255, 255, 255);
|
||||
vert->setU(u);
|
||||
vert->setV(v+dv);
|
||||
vert->setU(u, recipZ);
|
||||
vert->setV(v+dv, recipZ);
|
||||
vert++;
|
||||
|
||||
vert->setScreenX(x+curfont->glyphwidth);
|
||||
vert->setScreenY(y+curfont->glyphheight);
|
||||
vert->setScreenZ(rw::im2d::GetNearZ());
|
||||
vert->setCameraZ(cam->nearPlane);
|
||||
vert->setRecipCameraZ(1.0f/cam->nearPlane);
|
||||
vert->setRecipCameraZ(recipZ);
|
||||
vert->setColor(255, 255, 255, 255);
|
||||
vert->setU(u+du);
|
||||
vert->setV(v+dv);
|
||||
vert->setU(u+du, recipZ);
|
||||
vert->setV(v+dv, recipZ);
|
||||
vert++;
|
||||
|
||||
*ix++ = curVert;
|
||||
|
@ -251,15 +251,16 @@ im2dtest(void)
|
||||
0, 1, 2, 3
|
||||
};
|
||||
|
||||
float recipZ = 1.0f/Scene.camera->nearPlane;
|
||||
for(i = 0; i < 4; i++){
|
||||
verts[i].setScreenX(vs[i].x);
|
||||
verts[i].setScreenY(vs[i].y);
|
||||
verts[i].setScreenZ(rw::im2d::GetNearZ());
|
||||
verts[i].setCameraZ(Scene.camera->nearPlane);
|
||||
verts[i].setRecipCameraZ(1.0f/Scene.camera->nearPlane);
|
||||
verts[i].setRecipCameraZ(recipZ);
|
||||
verts[i].setColor(vs[i].r, vs[i].g, vs[i].b, vs[i].a);
|
||||
verts[i].setU(vs[i].u);
|
||||
verts[i].setV(vs[i].v);
|
||||
verts[i].setU(vs[i].u, recipZ);
|
||||
verts[i].setV(vs[i].v, recipZ);
|
||||
}
|
||||
|
||||
rw::engine->imtexture = tex2;
|
||||
@ -324,9 +325,9 @@ Draw(float timeDelta)
|
||||
camera->update();
|
||||
camera->m_rwcam->beginUpdate();
|
||||
|
||||
Scene.clump->render();
|
||||
// Scene.clump->render();
|
||||
// im2dtest();
|
||||
// tlTest(Scene.clump);
|
||||
tlTest(Scene.clump);
|
||||
// im3dtest();
|
||||
// printScreen("Hello, World!", 10, 10);
|
||||
|
||||
@ -380,11 +381,23 @@ KeyDown(int key)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MouseMove(int x, int y)
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
MouseButton(int buttons)
|
||||
{
|
||||
}
|
||||
|
||||
sk::EventStatus
|
||||
AppEventHandler(sk::Event e, void *param)
|
||||
{
|
||||
using namespace sk;
|
||||
Rect *r;
|
||||
MouseState *ms;
|
||||
|
||||
switch(e){
|
||||
case INITIALIZE:
|
||||
Init();
|
||||
@ -399,8 +412,20 @@ AppEventHandler(sk::Event e, void *param)
|
||||
case KEYUP:
|
||||
KeyUp(*(int*)param);
|
||||
return EVENTPROCESSED;
|
||||
case MOUSEBTN:
|
||||
ms = (MouseState*)param;
|
||||
MouseButton(ms->buttons);
|
||||
return EVENTPROCESSED;
|
||||
case MOUSEMOVE:
|
||||
ms = (MouseState*)param;
|
||||
MouseMove(ms->posx, ms->posy);
|
||||
return EVENTPROCESSED;
|
||||
case RESIZE:
|
||||
r = (Rect*)param;
|
||||
// TODO: register when we're minimized
|
||||
if(r->w == 0) r->w = 1;
|
||||
if(r->h == 0) r->h = 1;
|
||||
|
||||
sk::globals.width = r->w;
|
||||
sk::globals.height = r->h;
|
||||
// TODO: set aspect ratio
|
||||
|
@ -87,8 +87,8 @@ drawAtomic(Atomic *a)
|
||||
im2dverts[i].setCameraZ(xvert[i].z);
|
||||
im2dverts[i].setRecipCameraZ(recipZ);
|
||||
im2dverts[i].setColor(255, 0, 0, 255);
|
||||
im2dverts[i].setU(texcoords[i].u);
|
||||
im2dverts[i].setV(texcoords[i].v);
|
||||
im2dverts[i].setU(texcoords[i].u, recipZ);
|
||||
im2dverts[i].setV(texcoords[i].v, recipZ);
|
||||
}
|
||||
for(int32 i = 0; i < mh->numMeshes; i++){
|
||||
for(uint32 j = 0; j < m[i].numIndices; j++){
|
||||
@ -172,8 +172,8 @@ genIm3DTransform(void *vertices, int32 numVertices, Matrix *world)
|
||||
clipverts[i].setCameraZ(pos.z);
|
||||
clipverts[i].setRecipCameraZ(recipZ);
|
||||
clipverts[i].setColor(c.red, c.green, c.blue, c.alpha);
|
||||
clipverts[i].setU(objverts[i].u);
|
||||
clipverts[i].setV(objverts[i].v);
|
||||
clipverts[i].setU(objverts[i].u, recipZ);
|
||||
clipverts[i].setV(objverts[i].v, recipZ);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user