add more api

This commit is contained in:
Nishi 2026-01-12 04:36:04 +09:00
commit b8c714696f
Signed by: nishi
GPG key ID: 27EF69B208EB9343
3 changed files with 49 additions and 6 deletions

View file

@ -61,13 +61,52 @@ void GSGLSetLight(GSGL gl) {
glLightfv(GL_LIGHT0, GL_POSITION, f);
}
void GSGLPolygon(GSGL gl, int pairs, GSVector3* vert, GSVector2* tex) {
void GSGLPolygon(GSGL gl, int pairs, GSVector3* vert, GSVector2* tex, GSVector3 norm) {
int i;
glBegin(GL_POLYGON);
glNormal3f(norm[0], norm[1], norm[2]);
for(i = 0; i < pairs; i++) {
if(tex != NULL) glTexCoord2f(tex[i][0], tex[i][1]);
glVertex3f(vert[i][0], vert[i][1], vert[i][2]);
}
glEnd();
}
void GSGLPolygon2D(GSGL gl, int pairs, GSVector2* vert, GSVector2* tex) {
int i;
glBegin(GL_POLYGON);
for(i = 0; i < pairs; i++) {
if(tex != NULL) glTexCoord2f(tex[i][0], tex[i][1]);
glVertex2f(vert[i][0], vert[i][1]);
}
glEnd();
}
void GSGLBegin2D(GSGL gl) {
GSGLIgnoreDepth(gl);
GSGLShadowDisable(gl);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, gl->engine->width, gl->engine->height, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
}
void GSGLEnd2D(GSGL gl) {
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
GSGLShadowEnable(gl);
GSGLCareDepth(gl);
}

View file

@ -44,6 +44,7 @@ void GSSkyBoxDraw(GSSkyBox skybox) {
int i;
GSVector3 v[4];
GSVector2 t[4];
GSVector3 n = {0, 0, 0};
GSNumber s = 0.0001;
t[0][0] = 0, t[0][1] = 0;
@ -60,7 +61,7 @@ void GSSkyBoxDraw(GSSkyBox skybox) {
for(i = 0; i < 6; i++) {
GLuint tex;
int j, k;
if(i == 0) {
tex = skybox->left;
@ -114,7 +115,7 @@ void GSSkyBoxDraw(GSSkyBox skybox) {
GSGLTextureSet(gl, tex);
GSGLPolygon(gl, 4, v, t);
GSGLPolygon(gl, 4, v, t, n);
}
GSGLTextureSet(gl, 0);
@ -125,7 +126,7 @@ void GSSkyBoxDraw(GSSkyBox skybox) {
void GSSkyBoxClose(GSSkyBox skybox) {
GLuint* ptr[6];
int i;
int i;
ptr[0] = &skybox->left;
ptr[1] = &skybox->right;
@ -134,7 +135,7 @@ void GSSkyBoxClose(GSSkyBox skybox) {
ptr[4] = &skybox->up;
ptr[5] = &skybox->down;
for(i = 0; i < 6; i++){
for(i = 0; i < 6; i++) {
if(*ptr[i] > 0) GSGLTextureDelete(skybox->engine->client->gl, *ptr[i]);
}
free(skybox);