X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=r_sky.c;h=a830e85b391de20ebb21a493622738c18d1db172;hb=50179cc6a7fa538adf02e37077776a556e6ba63e;hp=a6fe724e2e1370892a15dad455d82687096b11ed;hpb=a1b49de12c089c9690446445059dd957d56de33d;p=xonotic%2Fdarkplaces.git diff --git a/r_sky.c b/r_sky.c index a6fe724e..a830e85b 100644 --- a/r_sky.c +++ b/r_sky.c @@ -62,12 +62,18 @@ void R_LoadSkyBox(void) return; for (i = 0;i < 6;i++) { - if (snprintf(name, sizeof(name), "env/%s%s", skyname, suf[i]) >= (int)sizeof(name) || !(image_rgba = loadimagepixels(name, false, 0, 0))) + if (snprintf(name, sizeof(name), "%s_%s", skyname, suf[i]) >= (int)sizeof(name) || !(image_rgba = loadimagepixels(name, false, 0, 0))) { - if (snprintf(name, sizeof(name), "gfx/env/%s%s", skyname, suf[i]) >= (int)sizeof(name) || !(image_rgba = loadimagepixels(name, false, 0, 0))) + if (snprintf(name, sizeof(name), "%s%s", skyname, suf[i]) >= (int)sizeof(name) || !(image_rgba = loadimagepixels(name, false, 0, 0))) { - Con_Printf ("Couldn't load env/%s%s or gfx/env/%s%s\n", skyname, suf[i], skyname, suf[i]); - continue; + if (snprintf(name, sizeof(name), "env/%s%s", skyname, suf[i]) >= (int)sizeof(name) || !(image_rgba = loadimagepixels(name, false, 0, 0))) + { + if (snprintf(name, sizeof(name), "gfx/env/%s%s", skyname, suf[i]) >= (int)sizeof(name) || !(image_rgba = loadimagepixels(name, false, 0, 0))) + { + Con_Printf("Couldn't load %s_%s or %s%s or env/%s%s or gfx/env/%s%s\n", skyname, suf[i], skyname, suf[i], skyname, suf[i], skyname, suf[i]); + continue; + } + } } } skyboxside[i] = R_LoadTexture2D(skytexturepool, va("skyboxside%d", i), image_width, image_height, image_rgba, TEXTYPE_RGBA, TEXF_CLAMP | TEXF_PRECACHE, NULL); @@ -82,7 +88,7 @@ int R_SetSkyBox(const char *sky) if (strlen(sky) > 1000) { - Con_Printf ("sky name too long (%i, max is 1000)\n", strlen(sky)); + Con_Printf("sky name too long (%i, max is 1000)\n", strlen(sky)); return false; } @@ -112,7 +118,7 @@ void LoadSky_f (void) if (skyname[0]) Con_Printf("current sky: %s\n", skyname); else - Con_Printf("no skybox has been set\n"); + Con_Print("no skybox has been set\n"); break; case 2: if (R_SetSkyBox(Cmd_Argv(1))) @@ -120,13 +126,13 @@ void LoadSky_f (void) if (skyname[0]) Con_Printf("skybox set to %s\n", skyname); else - Con_Printf("skybox disabled\n"); + Con_Print("skybox disabled\n"); } else Con_Printf("failed to load skybox %s\n", Cmd_Argv(1)); break; default: - Con_Printf("usage: loadsky skyname\n"); + Con_Print("usage: loadsky skyname\n"); break; } } @@ -230,14 +236,16 @@ static void R_SkyBox(void) GL_BlendFunc(GL_ONE, GL_ZERO); GL_DepthMask(true); GL_DepthTest(false); // don't modify or read zbuffer - GL_VertexPointer(skyboxvertex3f); + m.pointer_vertex = skyboxvertex3f; m.pointer_texcoord[0] = skyboxtexcoord2f; + GL_LockArrays(0, 6*4); for (i = 0;i < 6;i++) { m.tex[0] = R_GetTexture(skyboxside[i]); - R_Mesh_State_Texture(&m); + R_Mesh_State(&m); R_Mesh_Draw(6*4, 2, skyboxelements + i * 6); } + GL_LockArrays(0, 0); } #define skygridx 32 @@ -303,7 +311,7 @@ static void R_SkySphere(void) float speedscale; static qboolean skysphereinitialized = false; rmeshstate_t m; - matrix4x4_t scroll1matrix, scroll2matrix, identitymatrix; + matrix4x4_t scroll1matrix, scroll2matrix; if (!skysphereinitialized) { skysphereinitialized = true; @@ -318,41 +326,44 @@ static void R_SkySphere(void) // scroll the lower cloud layer twice as fast (just like quake did) Matrix4x4_CreateTranslate(&scroll1matrix, speedscale, speedscale, 0); Matrix4x4_CreateTranslate(&scroll2matrix, speedscale * 2, speedscale * 2, 0); - Matrix4x4_CreateIdentity(&identitymatrix); - GL_VertexPointer(skysphere_vertex3f); GL_Color(1, 1, 1, 1); GL_BlendFunc(GL_ONE, GL_ZERO); GL_DepthMask(true); GL_DepthTest(false); // don't modify or read zbuffer memset(&m, 0, sizeof(m)); + m.pointer_vertex = skysphere_vertex3f; m.tex[0] = R_GetTexture(solidskytexture); m.pointer_texcoord[0] = skysphere_texcoord2f; - R_Mesh_TextureMatrix(0, &scroll1matrix); + m.texmatrix[0] = scroll1matrix; if (r_textureunits.integer >= 2) { // one pass using GL_DECAL or GL_INTERPOLATE_ARB for alpha layer m.tex[1] = R_GetTexture(alphaskytexture); m.texcombinergb[1] = gl_combine.integer ? GL_INTERPOLATE_ARB : GL_DECAL; m.pointer_texcoord[1] = skysphere_texcoord2f; - R_Mesh_State_Texture(&m); - R_Mesh_TextureMatrix(1, &scroll2matrix); + m.texmatrix[1] = scroll2matrix; + R_Mesh_State(&m); + GL_LockArrays(0, skysphere_numverts); R_Mesh_Draw(skysphere_numverts, skysphere_numtriangles, skysphere_element3i); - R_Mesh_TextureMatrix(1, &identitymatrix); + GL_LockArrays(0, 0); } else { // two pass - R_Mesh_State_Texture(&m); + R_Mesh_State(&m); + GL_LockArrays(0, skysphere_numverts); R_Mesh_Draw(skysphere_numverts, skysphere_numtriangles, skysphere_element3i); + GL_LockArrays(0, 0); GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); m.tex[0] = R_GetTexture(alphaskytexture); - R_Mesh_State_Texture(&m); - R_Mesh_TextureMatrix(0, &scroll2matrix); + m.texmatrix[0] = scroll2matrix; + R_Mesh_State(&m); + GL_LockArrays(0, skysphere_numverts); R_Mesh_Draw(skysphere_numverts, skysphere_numtriangles, skysphere_element3i); + GL_LockArrays(0, 0); } - R_Mesh_TextureMatrix(0, &identitymatrix); } void R_Sky(void)