📄 initsence.cpp
字号:
MVECTOR mdir={0,-1,0,1};
g_bbm.SetBillBoardDir(mdir);
g_bbm.SetBillBoardUp(cinfo->vup);
g_bbm.SetCameraInfo(g_pcm);
g_bbm.SetCuller(&Culler);
int i;
int h = MapCfg.GetInteger("BillBoard","height");
int w = MapCfg.GetInteger("BillBoard","width");
C2DBillBoard* bb;
for(i=0;i<MB;i++)
{
bb = g_bbm.CreateBillBoard();
float x,y;
bb->m_height=(rand()%(h/2)+h/2)/3.0;
bb->m_width =(rand()%(w/2)+w/2)/3.0;
bb->m_x =x=rand()%(terrain.GetX()-5) +2 + (rand()%8)/ 7.0;
bb->m_y =y=rand()%(terrain.GetY()-5) +2 + (rand()%8)/ 7.0;
bb->m_z =terrain.GetHeight(x,y)- 0.1*bb->m_height ;
g_bbm.Add(bb,rand()%typecount);
}
}
void InitFlare()
{
GLuint texSecond;
GLuint texCross;
GLuint texRing;
GLuint texMain;
GLuint texMain2;
GLuint texSecond2;
texSecond = g_tex_mgr.LoadTexture("data\\flare\\second1.jpg");
if(texSecond == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\second1.jpg");
goto error_exit;;
}
texCross = g_tex_mgr.LoadTexture("data\\flare\\cross.jpg");
if(texCross == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\cross.jpg");
goto error_exit;;
}
texRing = g_tex_mgr.LoadTexture("data\\flare\\ring.jpg");
if(texRing == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\ring.jpg");
goto error_exit;;
}
texMain = g_tex_mgr.LoadTexture("data\\flare\\main1.jpg");
if(texMain == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\main1.jpg");
goto error_exit;;
}
texSecond = g_tex_mgr.LoadTexture("data\\flare\\second1.jpg");
if(texSecond == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\second1.jpg");
goto error_exit;;
}
texMain2 = g_tex_mgr.LoadTexture("data\\flare\\main2.jpg");
if(texMain2 == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\main2.jpg");
goto error_exit;
}
texSecond2 = g_tex_mgr.LoadTexture("data\\flare\\second2.jpg");
if(texSecond2 == -1)
{
Console.Printf("纹理文件加载失败 :%s","data\\flare\\second2.jpg");
goto error_exit;;
}
flare.SetLocation( MapCfg.GetInteger("LensFlar","pos_x"),
MapCfg.GetInteger("LensFlar","pos_y"),
MapCfg.GetInteger("LensFlar","pos_h"));
flare.SetCamera(g_pcm);
flare.AddMainNode(100,texMain);
flare.AddMainNode(30,texCross);
flare.AddMainNode(30,texRing);
flare.AddMainNode(80,texMain2);
flare.AddSubNode(180,2.0,texSecond);
flare.AddSubNode(80,1.0,texSecond);
flare.AddSubNode(60,1.3,texSecond2);
flare.AddSubNode(6,1.1,texMain);
flare.AddSubNode(15,1.0,texSecond);
flare.AddSubNode(20,1.0,texSecond2);
flare.AddSubNode(30,-0.4,texSecond);
flare.AddSubNode(0,0.90,texMain);
flare.AddSubNode(10,-0.20,texMain);
return ;
error_exit:
Console.Printf("加载眩光体纹理失败!");
TerminateApp();
}
void DrawCircle(float r,float z)
{
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0,0,z);
float x,y;
for(int i =0;i<=360;i++)
{
x = r * Math.Cos(i);
y = r * Math.Sin(i);
glVertex3f(x,y,z);
}
glEnd();
}
void DrawBillBoad(int id)
{
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex3f(-2,0,0);
glTexCoord2f(1,0);
glVertex3f(2,0,0);
glTexCoord2f(1,1);
glVertex3f(2,0,4);
glTexCoord2f(0,1);
glVertex3f(-2,0,4);
glEnd();
}
void DrawLensMask()
{
RECT rt;
GetClientRect(g_app.m_hMainWnd,&rt);
glClearStencil(0);
float a =float(rt.right -rt.left)/(rt.bottom - rt.top);
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_ALWAYS,1,1);
//glClear(GL_STENCIL_BUFFER_BIT);
//glStencilOp(GL_REPLACE,GL_REPLACE,GL_REPLACE);
glStencilOp(GL_INVERT,GL_INVERT,GL_INVERT);
glMatrixMode(GL_PROJECTION);
glPushMatrix();//=================
glLoadIdentity();
glOrtho(-100,100,-100 / a,100 / a,-500.0,500.0);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();////////////
glLoadIdentity();
glColor3f(1.,1.,1.);
DrawCircle(50,-20);
// glStencilOp(GL_INVERT,GL_INVERT,GL_INVERT);
glBegin(GL_LINES);
glVertex3f(-50,0,-30);
glVertex3f(50 ,0,-30);
glVertex3f(0,-50,-30);
glVertex3f(0,50,-30);
glEnd();
glPopMatrix();////////////
glMatrixMode(GL_PROJECTION);
glPopMatrix();//======================
glDisable(GL_STENCIL_TEST);
}
void DrawCross()
{
RECT rt;
glPushAttrib(GL_ENABLE_BIT);
glDisable(GL_BLEND);
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
GetClientRect(g_app.m_hMainWnd,&rt);
float a =float(rt.right -rt.left)/(rt.bottom - rt.top);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(-100,100,-100 / a,100 / a,-500.0,500.0);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glColor3f(0.,1.,1.);
glDisable(GL_DEPTH_TEST);
glLineWidth(1.0);
glBegin(GL_LINES);
glVertex3f(-5,0,-30);
glVertex3f(5 ,0,-30);
glVertex3f(0,-5,-30);
glVertex3f(0,5,-30);
glEnd();
glLineWidth(1);
glColor4f(1.0,0,0,1);
glPointSize(5.0);
glBegin(GL_POINTS);
glVertex3f(0,0,-30);
glEnd();
glPointSize(1.0);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
}
void LoadMapCfg()
{
BOOL bLoad = MapCfg.Load(Configure.GetString("Map","map"));
if(bLoad == FALSE)
{
//[Map];
MapCfg.InsertItem("Map","size" , "1025");
MapCfg.InsertItem("Map","maintex" , "data\\map\\textrue2048.jpg");
MapCfg.InsertItem("Map","mapfile" , "data\\map\\map1024.map");
MapCfg.InsertItem("Map","strength" , "0.113");
MapCfg.InsertItem("Map","texdetail","19");
MapCfg.InsertItem("Map","detail1","data\\map\\detail1.jpg");
MapCfg.InsertItem("Map","detail2","data\\map\\detail2.jpg");
MapCfg.InsertItem("Map","detail3","data\\map\\detail3.jpg");
MapCfg.InsertItem("Map","detail4","data\\map\\detail4.jpg");
MapCfg.InsertItem("Map","detail5","data\\map\\detail5.jpg");
MapCfg.InsertItem("Map","detail6","data\\map\\detail6.jpg");
MapCfg.InsertItem("Map","detail7","data\\map\\detail7.jpg");
MapCfg.InsertItem("Map","detail8","data\\map\\detail8.jpg");
MapCfg.InsertItem("Map","is_detail_tex","ON");
MapCfg.InsertItem("Map","smoothpass","3");
MapCfg.InsertItem("Map","lighttex","ON");
//[SkyBox]
MapCfg.InsertItem("SkyBox","style" , "BOX");
MapCfg.InsertItem("SkyBox","left" , "data\\skybox\\left.jpg");
MapCfg.InsertItem("SkyBox","right" , "data\\skybox\\right.jpg");
MapCfg.InsertItem("SkyBox","front" , "data\\skybox\\front.jpg");
MapCfg.InsertItem("SkyBox","back" , "data\\skybox\\back.jpg");
MapCfg.InsertItem("SkyBox","top" , "data\\skybox\\top.jpg");
MapCfg.InsertItem("SkyBox","bottom" , "data\\skybox\\bottom.jpg");
MapCfg.InsertItem("SkyBox","height" , "320");
MapCfg.InsertItem("SkyBox","start_h", "-100");
MapCfg.InsertItem("SkyBox","start_x", "0");
MapCfg.InsertItem("SkyBox","start_y", "0");
//[LensFlar]
MapCfg.InsertItem("LensFlar","pos_h","200");
MapCfg.InsertItem("LensFlar","pos_x","0");
MapCfg.InsertItem("LensFlar","pos_y","0");
// [BillBoard]
MapCfg.InsertItem("BillBoard","count","1000");
MapCfg.InsertItem("BillBoard","tree1","data\\texture\\tree1.jpg");
MapCfg.InsertItem("BillBoard","tree2","data\\texture\\tree2.jpg");
MapCfg.InsertItem("BillBoard","tree3","data\\texture\\tree3.jpg");
MapCfg.InsertItem("BillBoard","tree4","data\\texture\\tree4.jpg");
MapCfg.InsertItem("BillBoard","tree5","data\\texture\\tree5.jpg");
MapCfg.InsertItem("BillBoard","height","50");
MapCfg.InsertItem("BillBoard","width","40");
MapCfg.Save();
}
}
void LoadAppCfg()
{
BOOL bLoad = Configure.Load("SimNature.ini");
if(bLoad == FALSE)
{
//[General]
Configure.InsertItem("General","screen_w","640");
Configure.InsertItem("General","screen_h","480");
Configure.InsertItem("General","color_depth","32");
Configure.InsertItem("General","display_fre","85");
Configure.InsertItem("General","fullscreen","ON");
Configure.InsertItem("General","fog","ON");
Configure.InsertItem("General","billboard","ON");
Configure.InsertItem("General","eye_angle","25");
Configure.InsertItem("General","eye_h","5.2");
Configure.InsertItem("General","step","0.325");
//[LOD]
Configure.InsertItem("LOD","space_error","27");
Configure.InsertItem("LOD","object_error","2.5");
Configure.InsertItem("LOD","viewdist","600");
Configure.InsertItem("LOD","angle","70");
//[Map]
Configure.InsertItem("Map","size","2049");
Configure.InsertItem("Map","map","data\\map\\map2048.ini");
//[Fog]
Configure.InsertItem("Fog","r","0.8");
Configure.InsertItem("Fog","g","0.8");
Configure.InsertItem("Fog","b","0.9");
Configure.InsertItem("Fog","a","1.0");
Configure.InsertItem("Fog","density","0.00350");
Configure.InsertItem("Fog","near","890");
Configure.InsertItem("Fog","far","1000");
//[Blur]
Configure.InsertItem("Blur","x","0");
Configure.InsertItem("Blur","y","0");
Configure.InsertItem("Blur","value","0.7");
Configure.InsertItem("Snip","mask","data\\texture\\sniper.jpg");
Configure.Save();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -