|
|
- #include <exportfuncs.h>
- #include <gl/glaux.h>
- #include "surface.h"
- #include "qgl.h"
- #pragma comment(lib, "opengl32.lib")
- #pragma comment(lib, "GLu32.lib")
- #pragma comment(lib, "GLaux.lib")
- cl_enginefunc_t gEngfuncs;
- AUX_RGBImageRec *Sky_rt, *Sky_lf, *Sky_ft, *Sky_bk, *Sky_up, *Sky_dn;
- int Initialize(struct cl_enginefuncs_s *pEnginefuncs, int iVersion)
- {
- memcpy(&gEngfuncs, pEnginefuncs, sizeof(gEngfuncs));
- return gExportfuncs.Initialize(pEnginefuncs, iVersion);
- }
- int HUD_VidInit(void)
- {
- QGL_Init();
- if( strcmp( gEngfuncs.pfnGetCvarString( "sv_skyname" ), "SkyName" ) ) return gExportfuncs.HUD_VidInit();
- // >> 装入位图
- Sky_rt = auxDIBImageLoadA( "esf/gfx/env/SkyName_rt.bmp" );
- Sky_lf = auxDIBImageLoadA( "esf/gfx/env/SkyName_lf.bmp" );
- Sky_ft = auxDIBImageLoadA( "esf/gfx/env/SkyName_ft.bmp" );
- Sky_bk = auxDIBImageLoadA( "esf/gfx/env/SkyName_bk.bmp" );
- Sky_up = auxDIBImageLoadA( "esf/gfx/env/SkyName_up.bmp" );
- Sky_dn = auxDIBImageLoadA( "esf/gfx/env/SkyName_dn.bmp" );
- if ( Sky_rt == NULL || Sky_lf == NULL || Sky_ft == NULL || Sky_bk == NULL || Sky_up == NULL || Sky_dn == NULL )
- return gExportfuncs.HUD_VidInit();
-
- // >> 设置纹理环境
- qglTexEnvi( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_ENV, GL_REPLACE );
- qglTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
- qglTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
- qglTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
- qglTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
- qglTexParameteri( GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE );
- // >> 加载纹理贴图
- qglTexImage2D( GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGB, Sky_lf->sizeX, Sky_lf->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Sky_lf->data );
- qglTexImage2D( GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGB, Sky_rt->sizeX, Sky_rt->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Sky_rt->data );
- qglTexImage2D( GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGB, Sky_ft->sizeX, Sky_ft->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Sky_ft->data );
- qglTexImage2D( GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGB, Sky_bk->sizeX, Sky_bk->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Sky_bk->data );
- qglTexImage2D( GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGB, Sky_dn->sizeX, Sky_dn->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Sky_dn->data );
- qglTexImage2D( GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGB, Sky_up->sizeX, Sky_up->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Sky_up->data );
- return gExportfuncs.HUD_VidInit();
- }
- void HUD_DrawNormalTriangles(void)
- {
- if ( Sky_rt == NULL || Sky_lf == NULL || Sky_ft == NULL || Sky_bk == NULL || Sky_up == NULL || Sky_dn == NULL )
- return gExportfuncs.HUD_DrawNormalTriangles();
- qglDisable( GL_CULL_FACE );// 禁止剔除表面
- qglEnable( GL_TEXTURE_CUBE_MAP );// 启用立方体贴图[]
- // >> 禁止自动生成纹理坐标
- qglDisable( GL_TEXTURE_GEN_S );
- qglDisable( GL_TEXTURE_GEN_T );
- qglDisable( GL_TEXTURE_GEN_R );
- qglBegin( GL_QUADS );
- // >> 右面 rt
- qglTexCoord3f( -1.0f, 1.0f, -1.0f ); qglVertex3f( 25400.0f, 25330.0f, -25000.0f );
- qglTexCoord3f( -1.0f, -1.0f, -1.0f ); qglVertex3f( 25400.0f, 25330.0f, 25000.0f );
- qglTexCoord3f( -1.0f, -1.0f, 1.0f ); qglVertex3f( 25400.0f, -25430.0f, 25000.0f );
- qglTexCoord3f( -1.0f, 1.0f, 1.0f ); qglVertex3f( 25400.0f, -25430.0f, -25000.0f );
- // >> 左面 lf
- qglTexCoord3f( 1.0f, 1.0f, 1.0f ); qglVertex3f( -25400.0f, -25430.0f, -25000.0f );
- qglTexCoord3f( 1.0f, -1.0f, 1.0f ); qglVertex3f( -25400.0f, -25430.0f, 25000.0f );
- qglTexCoord3f( 1.0f, -1.0f, -1.0f ); qglVertex3f( -25400.0f, 25330.0f, 25000.0f );
- qglTexCoord3f( 1.0f, 1.0f, -1.0f ); qglVertex3f( -25400.0f, 25330.0f, -25000.0f );
- // >> 前面 ft
- qglTexCoord3f( -1.0f, 1.0f, -1.0f ); qglVertex3f( 25400.0f, -25430.0f, -25000.0f );
- qglTexCoord3f( -1.0f, 1.0f, 1.0f ); qglVertex3f( 25400.0f, -25430.0f, 25000.0f );
- qglTexCoord3f( 1.0f, 1.0f, 1.0f ); qglVertex3f( -25400.0f, -25430.0f, 25000.0f );
- qglTexCoord3f( 1.0f, 1.0f, -1.0f ); qglVertex3f( -25400.0f, -25430.0f, -25000.0f );
- // >> 后面 bk
- qglTexCoord3f( -1.0f, -1.0f, 1.0f ); qglVertex3f( -25400.0f, 25330.0f, -25000.0f );
- qglTexCoord3f( -1.0f, -1.0f, -1.0f ); qglVertex3f( -25400.0f, 25330.0f, 25000.0f );
- qglTexCoord3f( 1.0f, -1.0f, -1.0f ); qglVertex3f( 25400.0f, 25330.0f, 25000.0f );
- qglTexCoord3f( 1.0f, -1.0f, 1.0f ); qglVertex3f( 25400.0f, 25330.0f, -25000.0f );
- // >> 顶面 up
- qglTexCoord3f( 1.0f, 1.0f, -1.0f ); qglVertex3f( 25400.0f, 25330.0f, 25000.0f );
- qglTexCoord3f( -1.0f, 1.0f, -1.0f ); qglVertex3f( 25400.0f, -25430.0f, 25000.0f );
- qglTexCoord3f( -1.0f, -1.0f, -1.0f ); qglVertex3f( -25400.0f, -25430.0f, 25000.0f );
- qglTexCoord3f( 1.0f, -1.0f, -1.0f ); qglVertex3f( -25400.0f, 25330.0f, 25000.0f );
- // >> 底面 dn
- qglTexCoord3f( -1.0f, -1.0f, 1.0f ); qglVertex3f( 25400.0f, 25330.0f, -25000.0f );
- qglTexCoord3f( 1.0f, -1.0f, 1.0f ); qglVertex3f( 25400.0f, -25430.0f, -25000.0f );
- qglTexCoord3f( 1.0f, 1.0f, 1.0f ); qglVertex3f( -25400.0f, -25430.0f, -25000.0f );
- qglTexCoord3f( -1.0f, 1.0f, 1.0f ); qglVertex3f( -25400.0f, 25330.0f, -25000.0f );
- qglEnd();
- qglDisable(GL_TEXTURE_CUBE_MAP);// 禁止立方体贴图[]
- return gExportfuncs.HUD_DrawNormalTriangles();
- }
复制代码 |
|