+z as front
This commit is contained in:
parent
e6fd011636
commit
dd2ef93643
6 changed files with 62 additions and 36 deletions
|
|
@ -39,12 +39,24 @@ static void tick(void){
|
||||||
}
|
}
|
||||||
|
|
||||||
static GSVector3 rot = {0, 0, 0};
|
static GSVector3 rot = {0, 0, 0};
|
||||||
|
static GSVector3 pos = {0, 0, 0};
|
||||||
static GSModel model = NULL;
|
static GSModel model = NULL;
|
||||||
|
|
||||||
static void render(GSEngine self){
|
static void render(GSEngine self){
|
||||||
GSGL gl = GSClientGetGL(GSEngineGetClient(self));
|
GSGL gl = GSClientGetGL(GSEngineGetClient(self));
|
||||||
|
|
||||||
|
pos[1] = 0;
|
||||||
|
|
||||||
GSGLPushMatrix(gl);
|
GSGLPushMatrix(gl);
|
||||||
|
GSGLSetPosition(gl, pos);
|
||||||
|
GSGLSetRotation(gl, rot);
|
||||||
|
if(model != NULL) GSModelDraw(model);
|
||||||
|
GSGLPopMatrix(gl);
|
||||||
|
|
||||||
|
pos[1] = 1;
|
||||||
|
|
||||||
|
GSGLPushMatrix(gl);
|
||||||
|
GSGLSetPosition(gl, pos);
|
||||||
GSGLSetRotation(gl, rot);
|
GSGLSetRotation(gl, rot);
|
||||||
if(model != NULL) GSModelDraw(model);
|
if(model != NULL) GSModelDraw(model);
|
||||||
GSGLPopMatrix(gl);
|
GSGLPopMatrix(gl);
|
||||||
|
|
@ -52,6 +64,9 @@ static void render(GSEngine self){
|
||||||
|
|
||||||
static void after_render(GSEngine self){
|
static void after_render(GSEngine self){
|
||||||
rot[0] = rot[1] = rot[2] += (1.0 / GSEngineGetTPS(self)) * 90;
|
rot[0] = rot[1] = rot[2] += (1.0 / GSEngineGetTPS(self)) * 90;
|
||||||
|
|
||||||
|
pos[0] = cos(rot[0] / 180 * GSMathPi);
|
||||||
|
pos[2] = sin(rot[0] / 180 * GSMathPi);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
|
|
@ -86,7 +101,7 @@ int main(int argc, char** argv){
|
||||||
|
|
||||||
GSClientSetSkybox(GSEngineGetClient(engine), GSTrue);
|
GSClientSetSkybox(GSEngineGetClient(engine), GSTrue);
|
||||||
|
|
||||||
if((sound = GSSoundOpen(GSClientGetSoundEngine(GSEngineGetClient(engine)), "game:/shanghai.mp3")) != NULL){
|
if((sound = GSSoundOpen(GSClientGetSoundEngine(GSEngineGetClient(engine)), "game:/df97.xm")) != NULL){
|
||||||
GSSoundSetLoop(sound, 1);
|
GSSoundSetLoop(sound, 1);
|
||||||
GSSoundStart(sound);
|
GSSoundStart(sound);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,17 @@ void GSClientDestroy(GSClient client) {
|
||||||
|
|
||||||
static void scene(GSClient client) {
|
static void scene(GSClient client) {
|
||||||
if(client->engine->param->render != NULL) client->engine->param->render(client->engine);
|
if(client->engine->param->render != NULL) client->engine->param->render(client->engine);
|
||||||
|
|
||||||
|
GSVector3 n = {0, 1, 0};
|
||||||
|
GSVector3 q[] = {
|
||||||
|
{-3, -1, 3},
|
||||||
|
{-3, -1, -3},
|
||||||
|
{3, -1, -3},
|
||||||
|
{3, -1, 3}};
|
||||||
|
|
||||||
|
GSGLTextureSet(client->gl, 2);
|
||||||
|
GSGLPolygon(client->gl, 4, q, NULL, n);
|
||||||
|
GSGLTextureSet(client->gl, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSClientStep(GSClient client) {
|
void GSClientStep(GSClient client) {
|
||||||
|
|
|
||||||
|
|
@ -52,17 +52,17 @@ void GSGLCameraLookAt(GSGL gl, GSVector3 camera, GSVector3 look_at) {
|
||||||
for(i = 0; i < 16; i++) matrix[i] = 0;
|
for(i = 0; i < 16; i++) matrix[i] = 0;
|
||||||
matrix[4 * 0 + 0] = s[0];
|
matrix[4 * 0 + 0] = s[0];
|
||||||
matrix[4 * 1 + 0] = s[1];
|
matrix[4 * 1 + 0] = s[1];
|
||||||
matrix[4 * 2 + 0] = s[2];
|
matrix[4 * 2 + 0] = -s[2];
|
||||||
matrix[4 * 0 + 1] = u[0];
|
matrix[4 * 0 + 1] = u[0];
|
||||||
matrix[4 * 1 + 1] = u[1];
|
matrix[4 * 1 + 1] = u[1];
|
||||||
matrix[4 * 2 + 1] = u[2];
|
matrix[4 * 2 + 1] = -u[2];
|
||||||
matrix[4 * 0 + 2] = -f[0];
|
matrix[4 * 0 + 2] = -f[0];
|
||||||
matrix[4 * 1 + 2] = -f[1];
|
matrix[4 * 1 + 2] = -f[1];
|
||||||
matrix[4 * 2 + 2] = -f[2];
|
matrix[4 * 2 + 2] = f[2];
|
||||||
matrix[4 * 3 + 3] = 1;
|
matrix[4 * 3 + 3] = 1;
|
||||||
|
|
||||||
glMultMatrixd(matrix);
|
glMultMatrixd(matrix);
|
||||||
glTranslated(-camera[0], -camera[1], -camera[2]);
|
glTranslated(-camera[0], -camera[1], camera[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GSGLCameraSetup(GSGL gl) {
|
void GSGLCameraSetup(GSGL gl) {
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ static void parse_obj(GSModel model, char* txt) {
|
||||||
if(arrlen(model->vertex) > varr[i] * 3) {
|
if(arrlen(model->vertex) > varr[i] * 3) {
|
||||||
face.vertex[i][0] = (model->vertex[varr[i] * 3 + 0] - lm - lr / 2) / sc;
|
face.vertex[i][0] = (model->vertex[varr[i] * 3 + 0] - lm - lr / 2) / sc;
|
||||||
face.vertex[i][1] = (model->vertex[varr[i] * 3 + 1] - dm - ud / 2) / sc;
|
face.vertex[i][1] = (model->vertex[varr[i] * 3 + 1] - dm - ud / 2) / sc;
|
||||||
face.vertex[i][2] = (model->vertex[varr[i] * 3 + 2] - bm - bf / 2) / sc;
|
face.vertex[i][2] = -(model->vertex[varr[i] * 3 + 2] - bm - bf / 2) / sc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(arrlen(model->texcoord) > tarr[i] * 2) {
|
if(arrlen(model->texcoord) > tarr[i] * 2) {
|
||||||
|
|
@ -147,8 +147,8 @@ static void parse_obj(GSModel model, char* txt) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(c == 3) GSMathNormal3x3(face.normal, face.vertex[0], face.vertex[1], face.vertex[2]);
|
if(c == 3) GSMathNormal3x3(face.normal, face.vertex[2], face.vertex[1], face.vertex[0]);
|
||||||
if(c == 4) GSMathNormal3x4(face.normal, face.vertex[0], face.vertex[1], face.vertex[2], face.vertex[3]);
|
if(c == 4) GSMathNormal3x4(face.normal, face.vertex[3], face.vertex[2], face.vertex[1], face.vertex[0]);
|
||||||
|
|
||||||
arrput(model->face, face);
|
arrput(model->face, face);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -100,45 +100,45 @@ void GSSkyBoxDraw(GSSkyBox skybox) {
|
||||||
if(i == 0) {
|
if(i == 0) {
|
||||||
tex = skybox->left;
|
tex = skybox->left;
|
||||||
|
|
||||||
v[0][0] = -1, v[0][1] = 1 + s, v[0][2] = 1 + s;
|
v[0][0] = -1, v[0][1] = 1 + s, v[0][2] = -1 - s;
|
||||||
v[1][0] = -1, v[1][1] = -1 - s, v[1][2] = 1 + s;
|
v[1][0] = -1, v[1][1] = -1 - s, v[1][2] = -1 - s;
|
||||||
v[2][0] = -1, v[2][1] = -1 - s, v[2][2] = -1 - s;
|
v[2][0] = -1, v[2][1] = -1 - s, v[2][2] = 1 + s;
|
||||||
v[3][0] = -1, v[3][1] = 1 + s, v[3][2] = -1 - s;
|
v[3][0] = -1, v[3][1] = 1 + s, v[3][2] = 1 + s;
|
||||||
} else if(i == 1) {
|
} else if(i == 1) {
|
||||||
tex = skybox->right;
|
tex = skybox->right;
|
||||||
|
|
||||||
v[0][0] = 1, v[0][1] = 1 + s, v[0][2] = -1 - s;
|
v[0][0] = 1, v[0][1] = 1 + s, v[0][2] = 1 + s;
|
||||||
v[1][0] = 1, v[1][1] = -1 - s, v[1][2] = -1 - s;
|
v[1][0] = 1, v[1][1] = -1 - s, v[1][2] = 1 + s;
|
||||||
v[2][0] = 1, v[2][1] = -1 - s, v[2][2] = 1 + s;
|
v[2][0] = 1, v[2][1] = -1 - s, v[2][2] = -1 - s;
|
||||||
v[3][0] = 1, v[3][1] = 1 + s, v[3][2] = 1 + s;
|
v[3][0] = 1, v[3][1] = 1 + s, v[3][2] = -1 - s;
|
||||||
} else if(i == 2) {
|
} else if(i == 2) {
|
||||||
tex = skybox->front;
|
tex = skybox->front;
|
||||||
|
|
||||||
v[0][0] = -1 - s, v[0][1] = 1 + s, v[0][2] = -1;
|
v[0][0] = -1 - s, v[0][1] = 1 + s, v[0][2] = 1;
|
||||||
v[1][0] = -1 - s, v[1][1] = -1 - s, v[1][2] = -1;
|
v[1][0] = -1 - s, v[1][1] = -1 - s, v[1][2] = 1;
|
||||||
v[2][0] = 1 + s, v[2][1] = -1 - s, v[2][2] = -1;
|
v[2][0] = 1 + s, v[2][1] = -1 - s, v[2][2] = 1;
|
||||||
v[3][0] = 1 + s, v[3][1] = 1 + s, v[3][2] = -1;
|
v[3][0] = 1 + s, v[3][1] = 1 + s, v[3][2] = 1;
|
||||||
} else if(i == 3) {
|
} else if(i == 3) {
|
||||||
tex = skybox->back;
|
tex = skybox->back;
|
||||||
|
|
||||||
v[0][0] = 1 + s, v[0][1] = 1 + s, v[0][2] = 1;
|
v[0][0] = 1 + s, v[0][1] = 1 + s, v[0][2] = -1;
|
||||||
v[1][0] = 1 + s, v[1][1] = -1 - s, v[1][2] = 1;
|
v[1][0] = 1 + s, v[1][1] = -1 - s, v[1][2] = -1;
|
||||||
v[2][0] = -1 - s, v[2][1] = -1 - s, v[2][2] = 1;
|
v[2][0] = -1 - s, v[2][1] = -1 - s, v[2][2] = -1;
|
||||||
v[3][0] = -1 - s, v[3][1] = 1 + s, v[3][2] = 1;
|
v[3][0] = -1 - s, v[3][1] = 1 + s, v[3][2] = -1;
|
||||||
} else if(i == 4) {
|
} else if(i == 4) {
|
||||||
tex = skybox->up;
|
tex = skybox->up;
|
||||||
|
|
||||||
v[0][0] = -1 - s, v[0][1] = 1, v[0][2] = 1 + s;
|
v[0][0] = -1 - s, v[0][1] = 1, v[0][2] = -1 - s;
|
||||||
v[1][0] = -1 - s, v[1][1] = 1, v[1][2] = -1 - s;
|
v[1][0] = -1 - s, v[1][1] = 1, v[1][2] = 1 + s;
|
||||||
v[2][0] = 1 + s, v[2][1] = 1, v[2][2] = -1 - s;
|
v[2][0] = 1 + s, v[2][1] = 1, v[2][2] = 1 + s;
|
||||||
v[3][0] = 1 + s, v[3][1] = 1, v[3][2] = 1 + s;
|
v[3][0] = 1 + s, v[3][1] = 1, v[3][2] = -1 - s;
|
||||||
} else if(i == 5) {
|
} else if(i == 5) {
|
||||||
tex = skybox->down;
|
tex = skybox->down;
|
||||||
|
|
||||||
v[0][0] = -1 - s, v[0][1] = -1, v[0][2] = -1 - s;
|
v[0][0] = -1 - s, v[0][1] = -1, v[0][2] = 1 + s;
|
||||||
v[1][0] = -1 - s, v[1][1] = -1, v[1][2] = 1 + s;
|
v[1][0] = -1 - s, v[1][1] = -1, v[1][2] = -1 - s;
|
||||||
v[2][0] = 1 + s, v[2][1] = -1, v[2][2] = 1 + s;
|
v[2][0] = 1 + s, v[2][1] = -1, v[2][2] = -1 - s;
|
||||||
v[3][0] = 1 + s, v[3][1] = -1, v[3][2] = -1 - s;
|
v[3][0] = 1 + s, v[3][1] = -1, v[3][2] = 1 + s;
|
||||||
}
|
}
|
||||||
|
|
||||||
GSGLTextureSet(gl, tex);
|
GSGLTextureSet(gl, tex);
|
||||||
|
|
@ -159,10 +159,10 @@ void GSSkyBoxDraw(GSSkyBox skybox) {
|
||||||
n[1] = -1;
|
n[1] = -1;
|
||||||
n[2] = 0;
|
n[2] = 0;
|
||||||
|
|
||||||
vc[0][0] = -1 - s, vc[0][1] = 1, vc[0][2] = 1 - s;
|
vc[0][0] = -1 - s, vc[0][1] = 1, vc[0][2] = -1 - s;
|
||||||
vc[1][0] = -1 - s, vc[1][1] = 1, vc[1][2] = -1 + s;
|
vc[1][0] = -1 - s, vc[1][1] = 1, vc[1][2] = 1 + s;
|
||||||
vc[2][0] = 1 - s, vc[2][1] = 1, vc[2][2] = -1 + s;
|
vc[2][0] = 1 - s, vc[2][1] = 1, vc[2][2] = 1 + s;
|
||||||
vc[3][0] = 1 - s, vc[3][1] = 1, vc[3][2] = 1 - s;
|
vc[3][0] = 1 - s, vc[3][1] = 1, vc[3][2] = -1 - s;
|
||||||
|
|
||||||
tc[0][0] = -1, tc[0][1] = -1;
|
tc[0][0] = -1, tc[0][1] = -1;
|
||||||
tc[1][0] = -1, tc[1][1] = 1;
|
tc[1][0] = -1, tc[1][1] = 1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue