本文整理汇总了C++中Mtx44::SetToPerspective方法的典型用法代码示例。如果您正苦于以下问题:C++ Mtx44::SetToPerspective方法的具体用法?C++ Mtx44::SetToPerspective怎么用?C++ Mtx44::SetToPerspective使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mtx44
的用法示例。
在下文中一共展示了Mtx44::SetToPerspective方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Init
void SceneSkyBox::Init()
{
// Init VBO here
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Set background color
glEnable(GL_DEPTH_TEST); // Enable depth buffer and depth testing
glEnable(GL_CULL_FACE); // Enable back face culling
glEnable(GL_BLEND); //Enable Blending
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // Default to fill mode
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
// Generate a default VAO for now
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
m_programID = LoadShaders("Shader//Texture.vertexshader", "Shader//Blending.fragmentshader");
m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");
m_parameters[U_LIGHT0_POSITION] = glGetUniformLocation(m_programID, "lights[0].position_cameraspace");
m_parameters[U_LIGHT0_COLOR] = glGetUniformLocation(m_programID, "lights[0].color");
m_parameters[U_LIGHT0_POWER] = glGetUniformLocation(m_programID, "lights[0].power");
m_parameters[U_LIGHT0_KC] = glGetUniformLocation(m_programID, "lights[0].kC");
m_parameters[U_LIGHT0_KL] = glGetUniformLocation(m_programID, "lights[0].kL");
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights"); //in case you missed out practical 7
// Get a handle for our "colorTexture" uniform
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
glUseProgram(m_programID);
//variable to rotate geometry
//Initialize camera settings
camera.Init(Vector3(4, 3, 3), Vector3(0, 0, 0), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("AXES", 1000, 1000, 1000);
Mtx44 projection;
projection.SetToPerspective(45.f, 4.f / 3.f, 0.1f, 1000.f);
projectionStack.LoadMatrix(projection);
light[0].position.Set(0, 20, 0);
light[0].color.Set(1, 1, 1);
light[0].power = 1;
light[0].kC = 1.f;
light[0].kL = 0.01f;
light[0].kQ = 0.001f;
// Make sure you pass uniform parameters after glUseProgram()
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1i(m_parameters[U_NUMLIGHTS], 1);
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("LIGHT", Color(1, 1, 1), 36, 36);
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_QUAD]->textureID = LoadTGA("Image//color2.tga");
//Front
meshList[GEO_FRONT] = MeshBuilder::GenerateQuad("front", Color(1, 1, 1));
meshList[GEO_FRONT]->textureID = LoadTGA("Image//blizzardfront.tga");
//Back
meshList[GEO_BACK] = MeshBuilder::GenerateQuad("back", Color(1, 1, 1));
meshList[GEO_BACK]->textureID = LoadTGA("Image//blizzardback.tga");
//Left
meshList[GEO_LEFT] = MeshBuilder::GenerateQuad("left", Color(1, 1, 1));
meshList[GEO_LEFT]->textureID = LoadTGA("Image//blizzardright.tga");
//Right
meshList[GEO_RIGHT] = MeshBuilder::GenerateQuad("right", Color(1, 1, 1));
meshList[GEO_RIGHT]->textureID = LoadTGA("Image//blizzardleft.tga");
//Top
meshList[GEO_TOP] = MeshBuilder::GenerateQuad("top", Color(1, 1, 1));
meshList[GEO_TOP]->textureID = LoadTGA("Image//blizzardtop.tga");
//Bottom
meshList[GEO_BOTTOM] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_BOTTOM]->textureID = LoadTGA("Image//blizzardbottom.tga");
//Mario Jumpman Mario
meshList[GEO_MARIO] = MeshBuilder::GenerateQuad("Mario", Color(1, 1, 1));
meshList[GEO_MARIO]->textureID = LoadTGA("Image//Mario.tga");
}
示例2: LoadShaders
//.........这里部分代码省略.........
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHT0_TYPE] = glGetUniformLocation(m_programID, "lights[0].type");
m_parameters[U_LIGHT0_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[0].spotDirection");
m_parameters[U_LIGHT0_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[0].cosCutoff");
m_parameters[U_LIGHT0_COSINNER] = glGetUniformLocation(m_programID, "lights[0].cosInner");
m_parameters[U_LIGHT0_EXPONENT] = glGetUniformLocation(m_programID, "lights[0].exponent");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights");
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");
glUseProgram(m_programID);
light[0].type = Light::LIGHT_SPOT;
light[0].position.Set(camera.position.x, camera.position.y, camera.position.z);
light[0].color.Set(1, 1, 1);
light[0].power = 2.0f;
light[0].kC = 1.f;
light[0].kL = 0.01f;
light[0].kQ = 0.001f;
light[0].cosCutoff = cos(Math::DegreeToRadian(30));
light[0].cosInner = cos(Math::DegreeToRadian(15));
light[0].exponent = 3.f;
light[0].spotDirection.Set(-(camera.target.x - camera.position.x), -(camera.target.y - camera.position.y), -(camera.target.z - camera.position.z));
// Pass information
glUniform1i(m_parameters[U_NUMLIGHTS], 1);
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
//Initialize camera settings
camera.Init(Vector3(0, 10, 0), Vector3(0, 15, 1), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("reference", 1000, 1000, 1000);
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("lightball", Color(1, 1, 1), 10, 20);
meshList[GEO_FRONT] = MeshBuilder::GenerateQuad("front", Color(1, 1, 1));
meshList[GEO_FRONT]->textureID = LoadTGA("Image//SkyBox1_front.tga");
meshList[GEO_LEFT] = MeshBuilder::GenerateQuad("left", Color(1, 1, 1));
meshList[GEO_LEFT]->textureID = LoadTGA("Image//SkyBox1_left.tga");
meshList[GEO_RIGHT] = MeshBuilder::GenerateQuad("right", Color(1, 1, 1));
meshList[GEO_RIGHT]->textureID = LoadTGA("Image//SkyBox1_right.tga");
meshList[GEO_TOP] = MeshBuilder::GenerateQuad("top", Color(1, 1, 1));
meshList[GEO_TOP]->textureID = LoadTGA("Image//SkyBox1_up.tga");
meshList[GEO_BOTTOM] = MeshBuilder::GenerateQuad("SkyBox1_down", Color(1, 1, 1));
meshList[GEO_BOTTOM]->textureID = LoadTGA("Image//SkyBox1_down.tga");
meshList[GEO_BACK] = MeshBuilder::GenerateQuad("SkyBox1_back", Color(1, 1, 1));
meshList[GEO_BACK]->textureID = LoadTGA("Image//SkyBox1_back.tga");
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("SceneOpening", Color(0, 0, 0));
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT]->textureID = LoadTGA("Image//calibri.tga");
meshList[GEO_PLANETFLOOR] = MeshBuilder::GenerateQuad("planet floor", Color(1, 1, 1));
meshList[GEO_PLANETFLOOR]->textureID = LoadTGA("Image//PlanetFloor.tga");
meshList[GEO_FACILITYOUT] = MeshBuilder::GenerateOBJ("Facility Outer", "OBJ//FacilityOUT.obj");
meshList[GEO_FACILITYOUT]->textureID = LoadTGA("Image//FacilityOUT.tga");
meshList[GEO_FACILITYOUTWALL] = MeshBuilder::GenerateQuad("FacilityOUT wall", Color(1, 1, 1));
meshList[GEO_FACILITYOUTWALL]->textureID = LoadTGA("Image//OutsideWALL.tga");
meshList[GEO_DEADBODY] = MeshBuilder::GenerateOBJ("Pile of dead body", "OBJ//DeadBody.obj");
meshList[GEO_DEADBODY]->textureID = LoadTGA("Image//DeadBody.tga");
Mtx44 projection;
projection.SetToPerspective(45.f, 16.f / 9.f, 0.1f, 10000.f);
projectionStack.LoadMatrix(projection);
rotateCamX = false;
MoveCamera1 = 0;
camera_check1 = true;
camera_check2 = false;
camera_check3 = false;
rotateCamY = false;
RotateCamera = 0;
wokeUp = true;
check1 = true;
check2 = false;
check3 = false;
eyeOpening = 0;
text1 = false;
text2 = false;
// All Switches Debounce Key
}
示例3: LoadShaders
//.........这里部分代码省略.........
meshList[GEO_TILEHERO] = MeshBuilder::Generate2DMesh("GEO_TILEHERO", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO]->textureID = LoadTGA("Image//tile2_hero.tga");
meshList[GEO_TILETREE] = MeshBuilder::Generate2DMesh("GEO_TILETREE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILETREE]->textureID = LoadTGA("Image//tile3_tree.tga");
meshList[GEO_TILESTRUCTURE] = MeshBuilder::Generate2DMesh("GEO_TILESTRUCTURE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILESTRUCTURE]->textureID = LoadTGA("Image//tile3_structure.tga");
meshList[GEO_TILEHERO_FRAME0] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME0", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME0]->textureID = LoadTGA("Image//tile2_hero_frame_0.tga");
meshList[GEO_TILEHERO_FRAME1] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME1", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME1]->textureID = LoadTGA("Image//tile2_hero_frame_1.tga");
meshList[GEO_TILEHERO_FRAME2] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME2", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME2]->textureID = LoadTGA("Image//tile2_hero_frame_2.tga");
meshList[GEO_TILEHERO_FRAME3] = MeshBuilder::Generate2DMesh("GEO_TILEHERO_FRAME3", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEHERO_FRAME3]->textureID = LoadTGA("Image//tile2_hero_frame_3.tga");
meshList[GEO_TILE_KILLZONE] = MeshBuilder::Generate2DMesh("GEO_TILE_KILLZONE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILE_KILLZONE]->textureID = LoadTGA("Image//tile10_killzone.tga");
meshList[GEO_TILE_SAFEZONE] = MeshBuilder::Generate2DMesh("GEO_TILE_SAFEZONE", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILE_SAFEZONE]->textureID = LoadTGA("Image//tile11_safezone.tga");
meshList[GEO_TILEENEMY_FRAME0] = MeshBuilder::Generate2DMesh("GEO_TILEENEMY_FRAME0", Color(1, 1, 1), 0, 0, 25, 25);
meshList[GEO_TILEENEMY_FRAME0]->textureID = LoadTGA("Image//tile20_enemy.tga");
meshList[GEO_MENU] = MeshBuilder::Generate2DMesh("GEO_MENU", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_MENU]->textureID = LoadTGA("Image//MainMenu.tga");
meshList[GEO_HIGHSCORE] = MeshBuilder::Generate2DMesh("GEO_HIGHSCORE", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_HIGHSCORE]->textureID = LoadTGA("Image//Highscore.tga");
meshList[GEO_OPTION1] = MeshBuilder::Generate2DMesh("GEO_OPTION1", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_OPTION1]->textureID = LoadTGA("Image//OptionsSoundOn.tga");
meshList[GEO_INSTRUCTION] = MeshBuilder::Generate2DMesh("GEO_INSTRUCTIONS", Color(1, 1, 1), 0, 0, 800, 600);
meshList[GEO_INSTRUCTION]->textureID = LoadTGA("Image//Instructions.tga");
meshList[GEO_SELECT] = MeshBuilder::Generate2DMesh("GEO_SELECT", Color(1, 1, 1), 0, 0, 75, 55);
meshList[GEO_SELECT]->textureID = LoadTGA("Image//Select.tga");
meshList[GEO_SPRITE_ANIMATION] = MeshBuilder::GenerateSpriteAnimation("cat", 1, 6);
meshList[GEO_SPRITE_ANIMATION]->textureID = LoadTGA("Image//cat.tga");
m_spriteAnimation = dynamic_cast<SpriteAnimation*>(meshList[GEO_SPRITE_ANIMATION]);
if (m_spriteAnimation)
{
m_spriteAnimation->m_anim = new Animation();
m_spriteAnimation->m_anim->Set(0, 5, 0, 0.1f);
}
/*
// Initialise and load the tile map
m_cMap = new CMap();
m_cMap->Init( 600, 800, 24, 32, 600, 1600 );
m_cMap->LoadMap( "Image//MapDesign.csv" );
// Initialise and load the REAR tile map
m_cRearMap = new CMap();
m_cRearMap->Init( 600, 800, 24, 32, 600, 1600 );
m_cRearMap->LoadMap( "Image//MapDesign_Rear.csv" );
// Initialise the hero's position
theHero = new CPlayerInfo();
theHero->SetPos_x(50);
theHero->SetPos_y(100);
// Load the texture for minimap
m_cMinimap = new CMinimap();
m_cMinimap->SetBackground(MeshBuilder::GenerateMinimap("MINIMAP", Color(1, 1, 1), 1.f));
m_cMinimap->GetBackground()->textureID = LoadTGA("Image//grass_darkgreen.tga");
m_cMinimap->SetBorder( MeshBuilder::GenerateMinimapBorder("MINIMAPBORDER", Color(1, 1, 0), 1.f) );
m_cMinimap->SetAvatar( MeshBuilder::GenerateMinimapAvatar("MINIMAPAVATAR", Color(1, 1, 0), 1.f) );
// Set the strategy for the enemy
theEnemy = new CEnemy();
theEnemy->ChangeStrategy( NULL, false);
theEnemy->SetPos_x(575);
theEnemy->SetPos_y(100);
theArrayOfGoodies = new CGoodies*[10];
for (int i=0; i<10; i++)
{
theArrayOfGoodies[i] = theGoodiesFactory.Create( TREASURECHEST );
theArrayOfGoodies[i]->SetPos( 150 + i*25, 150 );
theArrayOfGoodies[i]->SetMesh(MeshBuilder::Generate2DMesh("GEO_TILE_TREASURECHEST", Color(1, 1, 1), 0, 0, 25, 25));
theArrayOfGoodies[i]->SetTextureID(LoadTGA("Image//tile4_treasurechest.tga"));
}
*/
// Projection matrix : 45° Field of View, 4:3 ratio, display range : 0.1 unit <-> 1000 units
Mtx44 perspective;
perspective.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f);
//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
projectionStack.LoadMatrix(perspective);
rotateAngle = 0;
m_save = new Save();
m_player = new Player();
m_player->PlayerInit("Player.lua");
//initailise grid system
Playfield = new GridSystem();
// in this order: position of the whole grid system, size of grid x, size of grid y, number of grid x, number of grid y
Playfield->Init(Vector3(400, 300, 0), 25.f, 25.f, 5, 5);
AddHighscore();
}
示例4: LoadShaders
void SceneLight2::Init()
{
// Load vertex and fragment shaders
m_programID = LoadShaders(
"Shader//Shading.vertexshader",
"Shader//LightSource.fragmentshader"
);
// Get a handle for our "MVP" uniform
m_parameters[U_MVP] = glGetUniformLocation(m_programID,"MVP");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID,"MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");
m_parameters[U_LIGHT0_POSITION] = glGetUniformLocation(m_programID, "lights[0].position_cameraspace");
m_parameters[U_LIGHT0_COLOR] = glGetUniformLocation(m_programID, "lights[0].color");
m_parameters[U_LIGHT0_POWER] = glGetUniformLocation(m_programID, "lights[0].power");
m_parameters[U_LIGHT0_KC] = glGetUniformLocation(m_programID, "lights[0].kC");
m_parameters[U_LIGHT0_KL] = glGetUniformLocation(m_programID, "lights[0].kL");
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHT0_TYPE] = glGetUniformLocation(m_programID, "lights[0].type");
m_parameters[U_LIGHT0_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[0].spotDirection");
m_parameters[U_LIGHT0_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[0].cosCutoff");
m_parameters[U_LIGHT0_COSINNER] = glGetUniformLocation(m_programID, "lights[0].cosInner");
m_parameters[U_LIGHT0_EXPONENT] = glGetUniformLocation(m_programID, "lights[0].exponent");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
// Use our shader
glUseProgram(m_programID);
// Enable depth test
glEnable(GL_DEPTH_TEST);
// Enable culling
glEnable(GL_CULL_FACE);
// Generate a default VAO for now
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
Mtx44 projection;
projection.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 1000.0f);
projectionStack.LoadMatrix(projection);
// Set background color to dark blue
glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
camera.Init(Vector3(0, 0, 10), Vector3(0, 0, 0), Vector3(0, 1, 0));
//MESH GENERATORS
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("axis", 1000, 1000, 1000);
meshList[GEO_RING] = MeshBuilder::GenerateRing("ellipse", 1, 1, 0.5f, 0.3f);
meshList[GEO_TORUS] = MeshBuilder::GenerateTorus("torus", 2, 1, 1, 1, 1, Color(0, 0, 0.5f));
meshList[GEO_CUBE] = MeshBuilder::GenerateCube("cube", 2, 2, 2, Color(0.5f, 0, 0.5f));
meshList[GEO_HEMISPHERE] = MeshBuilder::GenerateHemisphere("hemi", 2, 2, 2, Color(0.5f, 0, 0.5f));
meshList[GEO_CYLINDER] = MeshBuilder::GenerateCylinder("Cylinder", 3, 3, 5, Color(0.5f, 0.5f, 0.5f));
meshList[GEO_CONE] = MeshBuilder::GenerateCone("Cone", 3, 3, 5, Color(0.5f, 0.5f, 0.5f));
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("sphere", 0.5f, 0.5f, 0.5f, Color(1, 1, 1));
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("floor", 1000, 1000, Color(0.3f, 0.3f, 0.3f));
meshList[GEO_BALL1] = MeshBuilder::GenerateSphere("sphere", 3, 3, 3, Color(0.22f, 0.45f, 0.72f));
meshList[GEO_BALL1]->material.kAmbient.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL1]->material.kDiffuse.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL1]->material.kSpecular.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL1]->material.kShininess = 1.f;
meshList[GEO_BALL2] = MeshBuilder::GenerateSphere("sphere", 3, 3, 3, Color(0.22f, 0.45f, 0.72f));
meshList[GEO_BALL2]->material.kAmbient.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL2]->material.kDiffuse.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL2]->material.kSpecular.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL2]->material.kShininess = 1.f;
meshList[GEO_BALL3] = MeshBuilder::GenerateSphere("sphere", 3, 3, 3, Color(0.22f, 0.45f, 0.72f));
meshList[GEO_BALL3]->material.kAmbient.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL3]->material.kDiffuse.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL3]->material.kSpecular.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL3]->material.kShininess = 1.f;
meshList[GEO_BALL4] = MeshBuilder::GenerateSphere("sphere", 3, 3, 3, Color(0.22f, 0.45f, 0.72f));
meshList[GEO_BALL4]->material.kAmbient.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL4]->material.kDiffuse.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL4]->material.kSpecular.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL4]->material.kShininess = 1.f;
meshList[GEO_BALL5] = MeshBuilder::GenerateSphere("sphere", 3, 3, 3, Color(0.22f, 0.45f, 0.72f));
meshList[GEO_BALL5]->material.kAmbient.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL5]->material.kDiffuse.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL5]->material.kSpecular.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL5]->material.kShininess = 1.f;
meshList[GEO_BALL6] = MeshBuilder::GenerateSphere("sphere", 3, 3, 3, Color(0.22f, 0.45f, 0.72f));
meshList[GEO_BALL6]->material.kAmbient.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_BALL6]->material.kDiffuse.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL6]->material.kSpecular.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_BALL6]->material.kShininess = 1.f;
//.........这里部分代码省略.........
示例5: Render
void SceneBase::Render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Mtx44 perspective;
perspective.SetToPerspective(m_fov, 4.0f / 3.0f, 0.1f, 10000.0f);
//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
projectionStack.LoadMatrix(perspective);
// Camera matrix
viewStack.LoadIdentity();
viewStack.LookAt(
m_camera->position.x, m_camera->position.y, m_camera->position.z,
m_camera->target.x, m_camera->target.y, m_camera->target.z,
m_camera->up.x, m_camera->up.y, m_camera->up.z
);
// Model matrix : an identity matrix (model will be at the origin)
modelStack.LoadIdentity();
if(lights[0].type == Light::LIGHT_DIRECTIONAL)
{
Vector3 lightDir(lights[0].position.x, lights[0].position.y, lights[0].position.z);
Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
}
else if(lights[0].type == Light::LIGHT_SPOT)
{
Position lightPosition_cameraspace = viewStack.Top() * lights[0].position;
glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
Vector3 spotDirection_cameraspace = viewStack.Top() * lights[0].spotDirection;
glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
}
else
{
Position lightPosition_cameraspace = viewStack.Top() * lights[0].position;
glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
}
if(lights[1].type == Light::LIGHT_DIRECTIONAL)
{
Vector3 lightDir(lights[1].position.x, lights[1].position.y, lights[1].position.z);
Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightDirection_cameraspace.x);
}
else if(lights[1].type == Light::LIGHT_SPOT)
{
Position lightPosition_cameraspace = viewStack.Top() * lights[1].position;
glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
Vector3 spotDirection_cameraspace = viewStack.Top() * lights[1].spotDirection;
glUniform3fv(m_parameters[U_LIGHT1_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
}
else
{
Position lightPosition_cameraspace = viewStack.Top() * lights[1].position;
glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
}
// Render everything in the queue before popping it out
/*while (m_renderList.size() > 0)
{
CGameObject* go = m_renderList.front();
if (go) // Check if gameobject is valid
{
}
m_renderList.pop();
}*/
}
示例6: Init
void Credits::Init()
{
// Init VBO here
// Set background color to dark blue
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
//Enable depth buffer and depth testing
glEnable(GL_DEPTH_TEST);
//Enable back face culling
glEnable(GL_CULL_FACE);
//Default to fill mode
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Generate a default VAO for now
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
m_programID = LoadShaders("Shader//Texture.vertexshader", "Shader//Text.fragmentshader");
m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");
m_parameters[U_LIGHT0_POSITION] = glGetUniformLocation(m_programID, "lights[0].position_cameraspace");
m_parameters[U_LIGHT0_COLOR] = glGetUniformLocation(m_programID, "lights[0].color");
m_parameters[U_LIGHT0_POWER] = glGetUniformLocation(m_programID, "lights[0].power");
m_parameters[U_LIGHT0_KC] = glGetUniformLocation(m_programID, "lights[0].kC");
m_parameters[U_LIGHT0_KL] = glGetUniformLocation(m_programID, "lights[0].kL");
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHT0_TYPE] = glGetUniformLocation(m_programID, "lights[0].type");
m_parameters[U_LIGHT0_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[0].spotDirection");
m_parameters[U_LIGHT0_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[0].cosCutoff");
m_parameters[U_LIGHT0_COSINNER] = glGetUniformLocation(m_programID, "lights[0].cosInner");
m_parameters[U_LIGHT0_EXPONENT] = glGetUniformLocation(m_programID, "lights[0].exponent");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights");
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");
glUseProgram(m_programID);
light[0].type = Light::LIGHT_SPOT;
light[0].position.Set(camera.position.x, camera.position.y, camera.position.z);
light[0].color.Set(1, 1, 1);
light[0].power = 1.0f;
light[0].kC = 1.f;
light[0].kL = 0.01f;
light[0].kQ = 0.001f;
light[0].cosCutoff = cos(Math::DegreeToRadian(30));
light[0].cosInner = cos(Math::DegreeToRadian(15));
light[0].exponent = 3.f;
light[0].spotDirection.Set(-(camera.target.x - camera.position.x), -(camera.target.y - camera.position.y), -(camera.target.z - camera.position.z));
// Pass information
glUniform1i(m_parameters[U_NUMLIGHTS], 1);
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
//Initialize camera settings
camera.Init(Vector3(0, 10, 0), Vector3(0, 10, -1), Vector3(0, 1, 0));
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT]->textureID = LoadTGA("Image//calibri.tga");
meshList[GEO_TEXTBACKGROUND] = MeshBuilder::GenerateQuad("text background", Color(1, 1, 1));
meshList[GEO_NAME1] = MeshBuilder::GenerateQuad("Benny", Color(1, 1, 1));
meshList[GEO_NAME1]->textureID = LoadTGA("Image//Benny.tga");
meshList[GEO_NAME2] = MeshBuilder::GenerateQuad("Kewpie", Color(1, 1, 1));
meshList[GEO_NAME2]->textureID = LoadTGA("Image//Kewpie.tga");
meshList[GEO_NAME3] = MeshBuilder::GenerateQuad("Lyk", Color(1, 1, 1));
meshList[GEO_NAME3]->textureID = LoadTGA("Image//Lyk.tga");
meshList[GEO_NAME4] = MeshBuilder::GenerateQuad("Kenichi", Color(1, 1, 1));
meshList[GEO_NAME4]->textureID = LoadTGA("Image//Kenichi.tga");
meshList[GEO_TITLE] = MeshBuilder::GenerateQuad("Title", Color(1, 1, 1));
meshList[GEO_TITLE]->textureID = LoadTGA("Image//Title.tga");
Mtx44 projection;
projection.SetToPerspective(45.0f, 16.f / 9.f, 0.1f, 10000.f);
projectionStack.LoadMatrix(projection);
//.........这里部分代码省略.........
示例7: Render
void SceneText::Render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Mtx44 perspective;
perspective.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f);
//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
projectionStack.LoadMatrix(perspective);
// Camera matrix
viewStack.LoadIdentity();
viewStack.LookAt(
camera.position.x, camera.position.y, camera.position.z,
camera.target.x, camera.target.y, camera.target.z,
camera.up.x, camera.up.y, camera.up.z
);
// Model matrix : an identity matrix (model will be at the origin)
modelStack.LoadIdentity();
if(lights[0].type == Light::LIGHT_DIRECTIONAL)
{
Vector3 lightDir(lights[0].position.x, lights[0].position.y, lights[0].position.z);
Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightDirection_cameraspace.x);
}
else if(lights[0].type == Light::LIGHT_SPOT)
{
Position lightPosition_cameraspace = viewStack.Top() * lights[0].position;
glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
Vector3 spotDirection_cameraspace = viewStack.Top() * lights[0].spotDirection;
glUniform3fv(m_parameters[U_LIGHT0_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
}
else
{
Position lightPosition_cameraspace = viewStack.Top() * lights[0].position;
glUniform3fv(m_parameters[U_LIGHT0_POSITION], 1, &lightPosition_cameraspace.x);
}
if(lights[1].type == Light::LIGHT_DIRECTIONAL)
{
Vector3 lightDir(lights[1].position.x, lights[1].position.y, lights[1].position.z);
Vector3 lightDirection_cameraspace = viewStack.Top() * lightDir;
glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightDirection_cameraspace.x);
}
else if(lights[1].type == Light::LIGHT_SPOT)
{
Position lightPosition_cameraspace = viewStack.Top() * lights[1].position;
glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
Vector3 spotDirection_cameraspace = viewStack.Top() * lights[1].spotDirection;
glUniform3fv(m_parameters[U_LIGHT1_SPOTDIRECTION], 1, &spotDirection_cameraspace.x);
}
else
{
Position lightPosition_cameraspace = viewStack.Top() * lights[1].position;
glUniform3fv(m_parameters[U_LIGHT1_POSITION], 1, &lightPosition_cameraspace.x);
}
RenderMesh(meshList[GEO_AXES], false);
modelStack.PushMatrix();
modelStack.Translate(lights[0].position.x, lights[0].position.y, lights[0].position.z);
RenderMesh(meshList[GEO_LIGHTBALL], false);
modelStack.PopMatrix();
RenderSkybox();
// perspective;
////perspective.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f);
//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
//projectionStack.LoadMatrix(perspective);
//viewStack.LoadIdentity();
//
//modelStack.PushMatrix();
////modelStack.Translate(20, 0, -20);
////modelStack.Scale(0.1f, 0.1f, 0.1f);
//modelStack.Scale(50, 50, 50);
////RenderMesh(meshList[GEO_QUAD], false);
//RenderText(meshList[GEO_TEXT], "HelloWorld", Color(0, 1, 0));
//modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(-20, 0, -20);
RenderMesh(meshList[GEO_OBJECT], false);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(20, 0, -20);
RenderMesh(meshList[GEO_OBJECT], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Scale(10, 10, 10);
//RenderText(meshList[GEO_TEXT], "Hello World", Color(0, 1, 0));
RenderText(meshList[GEO_TEXT], "Hello World", Color(0, 1, 0));
modelStack.PopMatrix();
//On screen text
std::ostringstream ss;
ss.precision(5);
ss << "FPS: " << fps;
RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(0, 1, 0), 3, 0, 6);
std::ostringstream ss1;
//.........这里部分代码省略.........
示例8:
void SceneLight2::Render()
{
// Render VBO here
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//Temp variables
Mtx44 translate, rotate, scale;
Mtx44 MVP;
//These will be replaced by matrix stack soon
Mtx44 model;
Mtx44 view;
Mtx44 projection;
//Set all matrices to identity
translate.SetToIdentity();
rotate.SetToIdentity();
scale.SetToIdentity();
model.SetToIdentity();
//Set view matrix using camera settings
viewStack.LoadIdentity();
viewStack.LookAt(
camera.position.x, camera.position.y, camera.position.z,
camera.target.x, camera.target.y, camera.target.z,
camera.up.x, camera.up.y, camera.up.z
);
//Set projection matrix to perspective mode
projection.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 1000.0f); //FOV, Aspect Ratio, Near plane, Far plane
lighting();
lighting2();
modelStack.PushMatrix();
modelStack.Translate(light[0].position.x, light[0].position.y, light[0].position.z);
modelStack.Scale(0.5f, 0.5f, 0.5f);
renderMesh(meshList[GEO_LIGHTBALL], false);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(light[1].position.x, light[1].position.y, light[1].position.z);
modelStack.Scale(0.5f, 0.5f, 0.5f);
renderMesh(meshList[GEO_LIGHTBALL], false);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(0, 0, 0);
renderMesh(meshList[GEO_SPHERE], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(2, 0, 0);
renderMesh(meshList[GEO_SPHERE1], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(-2, 0, 0);
renderMesh(meshList[GEO_SPHERE2], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(2, 0, 2);
renderMesh(meshList[GEO_SPHERE3], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(-2, 0, 2);
renderMesh(meshList[GEO_SPHERE4], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(0, 0, 2);
renderMesh(meshList[GEO_SPHERE5], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(0, 0, -2);
renderMesh(meshList[GEO_SPHERE6], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(2, 0, -2);
renderMesh(meshList[GEO_SPHERE7], true);
modelStack.PopMatrix();
/*modelStack.PushMatrix();
modelStack.Translate(-2, 0, -2);
renderMesh(meshList[GEO_CYLINDER], true);
modelStack.PopMatrix();*/
//modelStack.PopMatrix();
modelStack.PushMatrix();
renderMesh(meshList[GEO_AXES], false);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(0, -1, 0);
modelStack.Scale(10, 10, 10);
renderMesh(meshList[GEO_QUAD], true);
modelStack.PopMatrix();
}
示例9: Perspective
void MS::Perspective(double fovy, double aspect, double zNear, double zFar) {
Mtx44 mat;
mat.SetToPerspective(fovy, aspect, zNear, zFar);
ms.top() = ms.top() * mat;
}
示例10: LoadShaders
//.........这里部分代码省略.........
light[1].color.Set(1, 1, 1);
light[1].power = 0.5;
light[1].kC = 1.f;
light[1].kL = 0.01f;
light[1].kQ = 0.001f;
light[1].cosCutoff = cos(Math::DegreeToRadian(30));
light[1].cosInner = cos(Math::DegreeToRadian(10));
light[1].exponent = 3.f;
light[1].position.Set(camera.position.x, camera.position.y, camera.position.z);
light[1].spotDirection.Set(camera.target.x, camera.target.y, camera.target.z);
// Pass information
glUniform1i(m_parameters[U_NUMLIGHTS], 2);
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
glUniform1i(m_parameters[U_LIGHT1_TYPE], light[1].type);
glUniform3fv(m_parameters[U_LIGHT1_COLOR], 1, &light[1].color.r);
glUniform1f(m_parameters[U_LIGHT1_POWER], light[1].power);
glUniform1f(m_parameters[U_LIGHT1_KC], light[1].kC);
glUniform1f(m_parameters[U_LIGHT1_KL], light[1].kL);
glUniform1f(m_parameters[U_LIGHT1_KQ], light[1].kQ);
glUniform1f(m_parameters[U_LIGHT1_COSCUTOFF], light[1].cosCutoff);
glUniform1f(m_parameters[U_LIGHT1_COSINNER], light[1].cosInner);
glUniform1f(m_parameters[U_LIGHT1_EXPONENT], light[1].exponent);
//Initialize camera settings
camera.Init(Vector3(0, 0, 0), Vector3(10,0,0), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("reference", 1000, 1000, 1000);
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("lightball", Color(1, 1, 1), 10, 20);
meshList[GEO_SIGN] = MeshBuilder::GenerateCube("sign", Color(0.8, 0.8, 0.2));
meshList[GEO_BOTTOM] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_BOTTOM]->textureID = LoadTGA("Image//bottom.tga");
meshList[GEO_TOP] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_TOP]->textureID = LoadTGA("Image//top.tga");
meshList[GEO_FRONT] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_FRONT]->textureID = LoadTGA("Image//front.tga");
meshList[GEO_BACK] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_BACK]->textureID = LoadTGA("Image//back.tga");
meshList[GEO_LEFT] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_LEFT]->textureID = LoadTGA("Image//left.tga");
meshList[GEO_RIGHT] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_RIGHT]->textureID = LoadTGA("Image//right.tga");
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_QUAD]->textureID = LoadTGA("Image//moon.tga");
meshList[GEO_HELMET] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_HELMET]->textureID = LoadTGA("Image//Helmet.tga");
meshList[GEO_MODEL1] = MeshBuilder::GenerateOBJ("model", "OBJ//SpaceObject.obj");
meshList[GEO_MODEL1]->textureID = LoadTGA("Image//outUV2.tga");
meshList[GEO_MODEL2] = MeshBuilder::GenerateOBJ("Flag", "OBJ//flag.obj");
meshList[GEO_MODEL2]->textureID = LoadTGA("Image//flagUV.tga");
meshList[GEO_BOULDER] = MeshBuilder::GenerateOBJ("Boulder", "OBJ//boulder.obj");
meshList[GEO_BOULDER]->textureID = LoadTGA("Image//boulder.tga");
meshList[GEO_CRATER] = MeshBuilder::GenerateOBJ("crater", "OBJ//crater.obj");
meshList[GEO_CRATER]->textureID = LoadTGA("Image//crater.tga");
meshList[GEO_ALIENHEAD] = MeshBuilder::GenerateOBJ("alienhead", "OBJ//alienhead.obj");
meshList[GEO_ALIENHEAD]->textureID = LoadTGA("Image//ALIENHEAD.tga");
meshList[GEO_ALIENPART] = MeshBuilder::GenerateOBJ("alienpart", "OBJ//alienpart.obj");
meshList[GEO_ALIENPART]->textureID = LoadTGA("Image//ALIENBODY.tga");
meshList[GEO_ALIENBODY] = MeshBuilder::GenerateOBJ("alienbody", "OBJ//alienbody.obj");
meshList[GEO_ALIENBODY]->textureID = LoadTGA("Image//ALIENBODY.tga");
meshList[GEO_TENT] = MeshBuilder::GenerateOBJ("alienbody", "OBJ//moonbase.obj");
meshList[GEO_TENT]->textureID = LoadTGA("Image//spacetent.tga");
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT]->textureID = LoadTGA("Image//calibri.tga");
Mtx44 projection;
projection.SetToPerspective(70.0f, 4.0f / 3.0f, 0.1f, 5000.0f);
projectionStack.LoadMatrix(projection);
}
示例11: LoadShaders
//.........这里部分代码省略.........
light[0].exponent = 3.f;
light[0].spotDirection.Set(0.f, 1.f, 0.f);
light[1].type = Light::LIGHT_SPOT;
light[1].position.Set(2, 2, 0);
light[1].color.Set(1, 1, 1);
light[1].power = 1;
light[1].kC = 1.f;
light[1].kL = 0.01f;
light[1].kQ = 0.01f;
light[1].cosCutoff = cos(Math::DegreeToRadian(45));
light[1].cosInner = cos(Math::DegreeToRadian(30));
light[1].exponent = 3.f;
light[1].spotDirection.Set(0.f, 1.f, 0.f);
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
glUniform1i(m_parameters[U_LIGHT1_TYPE], light[1].type);
glUniform3fv(m_parameters[U_LIGHT1_COLOR], 1, &light[1].color.r);
glUniform1f(m_parameters[U_LIGHT1_POWER], light[1].power);
glUniform1f(m_parameters[U_LIGHT1_KC], light[1].kC);
glUniform1f(m_parameters[U_LIGHT1_KL], light[1].kL);
glUniform1f(m_parameters[U_LIGHT1_KQ], light[1].kQ);
glUniform1f(m_parameters[U_LIGHT1_COSCUTOFF], light[1].cosCutoff);
glUniform1f(m_parameters[U_LIGHT1_COSINNER], light[1].cosInner);
glUniform1f(m_parameters[U_LIGHT1_EXPONENT], light[1].exponent);
//Initialize camera settings
camera.Init(Vector3(4, 3, 3), Vector3(0, 0, 0), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("reference", 1000, 1000, 1000);
meshList[GEO_CUBE] = MeshBuilder::GenerateCube("cube", Color(1, 0, 0));
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_QUAD]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_QUAD]->material.kDiffuse.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_QUAD]->material.kSpecular.Set(0.5f, 0.1f, 0.5f);
meshList[GEO_QUAD]->material.kShininess = 5.f;
meshList[GEO_CIRCLE] = MeshBuilder::GenerateCircle("circle", Color(1, 0, 0), 36);
meshList[GEO_RING] = MeshBuilder::GenerateRing("ring", Color(1, 0, 0), 0.3f, 36);
meshList[GEO_SPHERE] = MeshBuilder::GenerateSphere("sphere", Color(1, 0, 0), 18, 36);
meshList[GEO_SPHERE]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE]->material.kDiffuse.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_SPHERE]->material.kSpecular.Set(0.1f, 0.1f, 0.1f);
meshList[GEO_SPHERE]->material.kShininess = 5.f;
meshList[GEO_SPHERE1] = MeshBuilder::GenerateSphere("sphere1", Color(1.5, 0, 0.2), 18, 36);
meshList[GEO_SPHERE1]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE1]->material.kDiffuse.Set(0.8f, 0.8f, 0.8f);
meshList[GEO_SPHERE1]->material.kSpecular.Set(0.2f, 0.2f, 0.2f);
meshList[GEO_SPHERE1]->material.kShininess = 5.f;
meshList[GEO_SPHERE2] = MeshBuilder::GenerateSphere("sphere2", Color(0, 1, 0), 18, 36);
meshList[GEO_SPHERE2]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE2]->material.kDiffuse.Set(0.7f, 0.7f, 0.7f);
meshList[GEO_SPHERE2]->material.kSpecular.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_SPHERE2]->material.kShininess = 5.f;
meshList[GEO_SPHERE3] = MeshBuilder::GenerateSphere("sphere3", Color(0, 0, 1), 18, 36);
meshList[GEO_SPHERE3]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE3]->material.kDiffuse.Set(0.6f, 0.6f, 0.6f);
meshList[GEO_SPHERE3]->material.kSpecular.Set(0.4f, 0.4f, 0.4f);
meshList[GEO_SPHERE3]->material.kShininess = 5.f;
meshList[GEO_SPHERE4] = MeshBuilder::GenerateSphere("sphere4", Color(1, 1, 0), 18, 36);
meshList[GEO_SPHERE4]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE4]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE4]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE4]->material.kShininess = 5.f;
meshList[GEO_SPHERE5] = MeshBuilder::GenerateSphere("sphere5", Color(1, 0, 1), 18, 36);
meshList[GEO_SPHERE5]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE5]->material.kDiffuse.Set(0.4f, 0.4f, 0.4f);
meshList[GEO_SPHERE5]->material.kSpecular.Set(0.6f, 0.6f, 0.6f);
meshList[GEO_SPHERE5]->material.kShininess = 5.f;
meshList[GEO_SPHERE6] = MeshBuilder::GenerateSphere("sphere6", Color(0, 1, 1), 18, 36);
meshList[GEO_SPHERE6]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE6]->material.kDiffuse.Set(0.3f, 0.3f, 0.3f);
meshList[GEO_SPHERE6]->material.kSpecular.Set(0.7f, 0.7f, 0.7f);
meshList[GEO_SPHERE6]->material.kShininess = 5.f;
meshList[GEO_SPHERE7] = MeshBuilder::GenerateSphere("sphere7", Color(1, 1, 1), 18, 36);
meshList[GEO_SPHERE7]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE7]->material.kDiffuse.Set(0.2f, 0.2f, 0.2f);
meshList[GEO_SPHERE7]->material.kSpecular.Set(0.8f, 0.8f, 0.8f);
meshList[GEO_SPHERE7]->material.kShininess = 5.f;
/*meshList[GEO_CYLINDER] = MeshBuilder::GenerateCylinder("cylinder", Color(0.8, 0.8, 0.1), 36);
meshList[GEO_CYLINDER]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_CYLINDER]->material.kDiffuse.Set(0.1f, 0.1f, 0.1f);
meshList[GEO_CYLINDER]->material.kSpecular.Set(0.9f, 0.9f, 0.9f);
meshList[GEO_CYLINDER]->material.kShininess = 5.f;*/
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("lightball", Color(1, 1, 1), 18, 36);
Mtx44 projection;
projection.SetToPerspective(45.f, 4.f / 3.f, 0.1f, 1000.f);
projectionStack.LoadMatrix(projection);
}
示例12: LoadShaders
//.........这里部分代码省略.........
// Get a handle for our "colorTexture" uniform
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
//variable to rotate geometry
rotateAngle = 0;
//Initialize camera settings
//camera.Init(Vector3(0, 500, 0), Vector3(0, 500, 1), Vector3(0, 1, 0));
camera.Init(Vector3(0, 20, 0), Vector3(0, 20, -1), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("reference", 1000, 1000, 1000);
meshList[SPACE_FRONT] = MeshBuilder::GenerateQuad("front", Color(1, 1, 1));
meshList[SPACE_FRONT]->textureID = LoadTGA("Image//vaultdoor.tga"); // SpaceFront
meshList[SPACE_BACK] = MeshBuilder::GenerateQuad("back", Color(1, 1, 1));
meshList[SPACE_BACK]->textureID = LoadTGA("Image//ceiling.tga"); //SpaceBack
meshList[SPACE_LEFT] = MeshBuilder::GenerateQuad("left", Color(1, 1, 1));
meshList[SPACE_LEFT]->textureID = LoadTGA("Image//ceiling.tga"); // SpaceLeft
meshList[SPACE_RIGHT] = MeshBuilder::GenerateQuad("right", Color(1, 1, 1));
meshList[SPACE_RIGHT]->textureID = LoadTGA("Image//ceiling.tga"); //SpaceRight
meshList[SPACE_TOP] = MeshBuilder::GenerateQuad("top", Color(1, 1, 1));
meshList[SPACE_TOP]->textureID = LoadTGA("Image//ceiling.tga"); //SpaceTop
meshList[SPACE_BOTTOM] = MeshBuilder::GenerateQuad("bottom", Color(1, 1, 1));
meshList[SPACE_BOTTOM]->textureID = LoadTGA("Image//ceiling.tga"); //SpaceBottom
meshList[SPACE_BOTTOM] = MeshBuilder::GenerateQuad("bottom", Color(1, 1, 1));
meshList[SPACE_BOTTOM]->textureID = LoadTGA("Image//floor.tga");
meshList[GEO_CUBE] = MeshBuilder::GenerateCube("cube", Color(1, 1, 1));
//meshList[GEO_CUBE]->textureID = LoadTGA("Image//ceiling_1.tga");
meshList[GEO_CRATE] = MeshBuilder::GenerateOBJ("Crate", "OBJ//Crate.obj");
meshList[GEO_CRATE]->textureID = LoadTGA("Image//Crate.tga");
// story lines
meshList[TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[TEXT]->textureID = LoadTGA("Image//testfont.tga");
// GENERAL USE
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT]->textureID = LoadTGA("Image//testfont.tga");
meshList[GEO_TEXT2] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT2]->textureID = LoadTGA("Image//testfont.tga");
// coordinate text
meshList[GEO_TEXTx] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXTx]->textureID = LoadTGA("Image//testfont.tga");
meshList[GEO_TEXTy] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXTy]->textureID = LoadTGA("Image//testfont.tga");
meshList[GEO_TEXTz] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXTz]->textureID = LoadTGA("Image//testfont.tga");
light[0].type = Light::LIGHT_SPOT;
//light[0].position.Set(225, 3, 225); // first building light
light[0].position.Set(0, 0, 0);
light[0].color.Set(1, 1, 1);
light[0].power = 1;
light[0].kC = 1.f;
light[0].kL = 0.01f;
light[0].kQ = 0.001f;
light[0].cosCutoff = cos(Math::DegreeToRadian(45));
light[0].cosInner = cos(Math::DegreeToRadian(30));
light[0].exponent = 3.f;
light[0].spotDirection.Set(0.f, 1.0f, 0.f);
// Make sure you pass uniform parameters after glUseProgram()
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
// Make sure you pass uniform parameters after glUseProgram()
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
Mtx44 projection;
projection.SetToPerspective(75.f, 4.f / 3.f, 0.1f, 5000.f);
projectionStack.LoadMatrix(projection);
glUniform1i(m_parameters[U_NUMLIGHTS], 1);
}
示例13: Color
void Assignment3::Render()
{
// Render VBO here
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//Temp variables
Mtx44 translate, rotate, scale;
Mtx44 MVP;
//These will be replaced by matrix stack soon
Mtx44 model;
Mtx44 view;
Mtx44 projection;
//Set all matrices to identity
translate.SetToIdentity();
rotate.SetToIdentity();
scale.SetToIdentity();
model.SetToIdentity();
//Set view matrix using camera settings
viewStack.LoadIdentity();
viewStack.LookAt(
camera.position.x, camera.position.y, camera.position.z,
camera.target.x, camera.target.y, camera.target.z,
camera.up.x, camera.up.y, camera.up.z
);
//Set projection matrix to perspective mode
projection.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f); //FOV, Aspect Ratio, Near plane, Far plane
lighting();
lighting2();
modelStack.PushMatrix();
modelStack.Translate(light[0].position.x, light[0].position.y, light[0].position.z);
modelStack.Scale(0.1f, 0.1f, 0.1f);
renderMesh(meshList[GEO_LIGHTBALL], false);
modelStack.PopMatrix();
/*modelStack.PushMatrix();
renderMesh(meshList[GEO_AXES], false);
modelStack.PopMatrix();*/
modelStack.PushMatrix();
modelStack.Translate(boxX, 496.9, boxZ);
RenderSkybox();
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(snowWallCoord.x, 0, snowWallCoord.z);
modelStack.Rotate(-90, 0, 1, 0);
//modelStack.Scale(10, 10, 10);
renderMesh(meshList[GEO_SNOWWALL], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(snowBallCoord.x, snowBallCoord.y, snowBallCoord.z);
modelStack.Scale(0.2, 0.2, 0.2);
renderMesh(meshList[GEO_SNOWBALLPILE], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(snowBallCoord1.x, snowBallCoord1.y, snowBallCoord1.z);
modelStack.Scale(0.2, 0.2, 0.2);
renderMesh(meshList[GEO_SNOWBALLPILE], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(snowBallCoord2.x, snowBallCoord2.y, snowBallCoord2.z);
modelStack.Scale(0.2, 0.2, 0.2);
renderMesh(meshList[GEO_SNOWBALLPILE], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(snowBallCoord5.x, snowBallCoord5.y, snowBallCoord5.z);
modelStack.Scale(0.2, 0.2, 0.2);
renderMesh(meshList[GEO_SNOWBALLPILE], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(snowBallCoord6.x, snowBallCoord6.y, snowBallCoord6.z);
modelStack.Scale(0.2, 0.2, 0.2);
renderMesh(meshList[GEO_SNOWBALLPILE], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(robbyCoord.x, robbyCoord.y, robbyCoord.z);
modelStack.Scale(0.5, 0.5, 0.5);
modelStack.Rotate(robbyRotate, 0, 1, 0);
modelStack.Rotate(-90, 0, 1, 0);
renderMesh(meshList[GEO_ROBBY], true);
modelStack.PopMatrix();
modelStack.PushMatrix();
modelStack.Translate(0, -1, 0);
modelStack.Rotate(-90, 0, 1, 0);
modelStack.Scale(1500, 1500, 1500);
renderMesh(meshList[GEO_BOTTOM], true);
modelStack.PopMatrix();
//.........这里部分代码省略.........
示例14: LoadShaders
//.........这里部分代码省略.........
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1f(m_parameters[U_LIGHT0_COSCUTOFF], light[0].cosCutoff);
glUniform1f(m_parameters[U_LIGHT0_COSINNER], light[0].cosInner);
glUniform1f(m_parameters[U_LIGHT0_EXPONENT], light[0].exponent);
glUniform1i(m_parameters[U_LIGHT1_TYPE], light[1].type);
glUniform3fv(m_parameters[U_LIGHT1_COLOR], 1, &light[1].color.r);
glUniform1f(m_parameters[U_LIGHT1_POWER], light[1].power);
glUniform1f(m_parameters[U_LIGHT1_KC], light[1].kC);
glUniform1f(m_parameters[U_LIGHT1_KL], light[1].kL);
glUniform1f(m_parameters[U_LIGHT1_KQ], light[1].kQ);
glUniform1f(m_parameters[U_LIGHT1_COSCUTOFF], light[1].cosCutoff);
glUniform1f(m_parameters[U_LIGHT1_COSINNER], light[1].cosInner);
glUniform1f(m_parameters[U_LIGHT1_EXPONENT], light[1].exponent);
//Initialize camera settings
camera.Init(Vector3(0, 0, 1), Vector3(0, 0, 0), Vector3(0, 1, 0));
boxCoord = camera.position;
snowBallCoord.Set(-5,-1,-10) ;
snowBallCoord1.Set(-5, -1, -10);
snowBallCoord2.Set(10, -1, -3);
snowBallCoord5.Set(-10, -1, -4);
snowBallCoord6.Set(-12, -1, -14);
snowWallCoord.Set(0,-1,-10);
robbyCoord.Set(10,-0.45,-10);
snowBarricadeCoord.Set(9, -1.2f, -10);
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("reference", 1000, 1000, 1000);
meshList[GEO_QUAD] = MeshBuilder::GenerateQuad("quad", Color(1, 1, 1));
meshList[GEO_QUAD]->textureID = LoadTGA("Image//Pikachu2.tga");
meshList[GEO_FRONT] = MeshBuilder::GenerateQuad("front", Color(1, 1, 1));
meshList[GEO_FRONT]->textureID = LoadTGA("Image//snowFront.tga");
meshList[GEO_BACK] = MeshBuilder::GenerateQuad("back", Color(1, 1, 1));
meshList[GEO_BACK]->textureID = LoadTGA("Image//snowBack.tga");
meshList[GEO_BOTTOM] = MeshBuilder::GenerateQuad("bottom", Color(1, 1, 1));
meshList[GEO_BOTTOM]->textureID = LoadTGA("Image//blueSnow.tga");
meshList[GEO_BOTTOM]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_BOTTOM]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_BOTTOM]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_BOTTOM]->material.kShininess = 5.f;
meshList[GEO_LEFT] = MeshBuilder::GenerateQuad("left", Color(1, 1, 1));
meshList[GEO_LEFT]->textureID = LoadTGA("Image//snowLeft.tga");
meshList[GEO_RIGHT] = MeshBuilder::GenerateQuad("right", Color(1, 1, 1));
meshList[GEO_RIGHT]->textureID = LoadTGA("Image//snowRight.tga");
meshList[GEO_TOP] = MeshBuilder::GenerateQuad("top", Color(1, 1, 1));
meshList[GEO_TOP]->textureID = LoadTGA("Image//snowTop.tga");
meshList[GEO_SNOWWALL] = MeshBuilder::GenerateOBJ("snowwall", "OBJ//snowWall.obj");
meshList[GEO_SNOWWALL]->textureID = LoadTGA("Image//marbleSnow.tga");
meshList[GEO_SNOWWALL]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWWALL]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWWALL]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWWALL]->material.kShininess = 5.f;
meshList[GEO_ROBBY] = MeshBuilder::GenerateOBJ("robby", "OBJ//robby.obj");
meshList[GEO_ROBBY]->textureID = LoadTGA("Image//Robby_Texture.tga");
meshList[GEO_ROBBY]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_ROBBY]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_ROBBY]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_ROBBY]->material.kShininess = 5.f;
meshList[GEO_SNOWBARRICADE] = MeshBuilder::GenerateOBJ("snowBarricade", "OBJ//snowBarricade.obj");
meshList[GEO_SNOWBARRICADE]->textureID = LoadTGA("Image//marbleSnow.tga");
meshList[GEO_SNOWBARRICADE]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWBARRICADE]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWBARRICADE]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWBARRICADE]->material.kShininess = 5.f;
meshList[GEO_SNOWBALLPILE] = MeshBuilder::GenerateOBJ("snowballpile", "OBJ//snowBallPile.obj");
meshList[GEO_SNOWBALLPILE]->textureID = LoadTGA("Image//marbleSnow.tga");
meshList[GEO_SNOWBALLPILE]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWBALLPILE]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWBALLPILE]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWBALLPILE]->material.kShininess = 5.f;
meshList[GEO_SNOWFORT] = MeshBuilder::GenerateOBJ("snowfort", "OBJ//snowFort.obj");
meshList[GEO_SNOWFORT]->textureID = LoadTGA("Image//marbleSnow.tga");
meshList[GEO_SNOWFORT]->material.kAmbient.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWFORT]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWFORT]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SNOWFORT]->material.kShininess = 5.f;
meshList[GEO_SPHERE] = MeshBuilder::GenerateSphere("sphere", Color(1, 1, 1), 18, 36);
meshList[GEO_SPHERE]->material.kAmbient.Set(0.7f, 0.7f, 0.7f);
meshList[GEO_SPHERE]->material.kDiffuse.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE]->material.kSpecular.Set(0.5f, 0.5f, 0.5f);
meshList[GEO_SPHERE]->material.kShininess = 10.f;
meshList[GEO_TEXT] = MeshBuilder::GenerateText("text", 16, 16);
meshList[GEO_TEXT]->textureID = LoadTGA("Image//TimesNewRoman.tga");
meshList[GEO_LIGHTBALL] = MeshBuilder::GenerateSphere("lightball", Color(1, 1, 1), 18, 36);
Mtx44 projection;
projection.SetToPerspective(45.f, 4.f / 3.f, 0.1f, 10000.f);
projectionStack.LoadMatrix(projection);
}
示例15: LoadShaders
void PLANET5::Init()
{
// Init VBO here
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Set background color
glEnable(GL_DEPTH_TEST); // Enable depth buffer and depth testing
glEnable(GL_CULL_FACE); // Enable back face culling
// Enable blending
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // Default to fill mode
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
// Generate a default VAO for now
glGenVertexArrays(1, &m_vertexArrayID);
glBindVertexArray(m_vertexArrayID);
m_programID = LoadShaders("Shader//Texture.vertexshader", "Shader//Text.fragmentshader");
m_parameters[U_MVP] = glGetUniformLocation(m_programID, "MVP");
m_parameters[U_MODELVIEW] = glGetUniformLocation(m_programID, "MV");
m_parameters[U_MODELVIEW_INVERSE_TRANSPOSE] = glGetUniformLocation(m_programID, "MV_inverse_transpose");
m_parameters[U_MATERIAL_AMBIENT] = glGetUniformLocation(m_programID, "material.kAmbient");
m_parameters[U_MATERIAL_DIFFUSE] = glGetUniformLocation(m_programID, "material.kDiffuse");
m_parameters[U_MATERIAL_SPECULAR] = glGetUniformLocation(m_programID, "material.kSpecular");
m_parameters[U_MATERIAL_SHININESS] = glGetUniformLocation(m_programID, "material.kShininess");
m_parameters[U_LIGHT0_TYPE] = glGetUniformLocation(m_programID, "lights[0].type");
m_parameters[U_LIGHT0_POSITION] = glGetUniformLocation(m_programID, "lights[0].position_cameraspace");
m_parameters[U_LIGHT0_COLOR] = glGetUniformLocation(m_programID, "lights[0].color");
m_parameters[U_LIGHT0_POWER] = glGetUniformLocation(m_programID, "lights[0].power");
m_parameters[U_LIGHT0_KC] = glGetUniformLocation(m_programID, "lights[0].kC");
m_parameters[U_LIGHT0_KL] = glGetUniformLocation(m_programID, "lights[0].kL");
m_parameters[U_LIGHT0_KQ] = glGetUniformLocation(m_programID, "lights[0].kQ");
m_parameters[U_LIGHTENABLED] = glGetUniformLocation(m_programID, "lightEnabled");
m_parameters[U_LIGHT1_TYPE] = glGetUniformLocation(m_programID, "lights[1].type");
m_parameters[U_LIGHT1_POSITION] = glGetUniformLocation(m_programID, "lights[1].position_cameraspace");
m_parameters[U_LIGHT1_COLOR] = glGetUniformLocation(m_programID, "lights[1].color");
m_parameters[U_LIGHT1_POWER] = glGetUniformLocation(m_programID, "lights[1].power");
m_parameters[U_LIGHT1_KC] = glGetUniformLocation(m_programID, "lights[1].kC");
m_parameters[U_LIGHT1_KL] = glGetUniformLocation(m_programID, "lights[1].kL");
m_parameters[U_LIGHT1_KQ] = glGetUniformLocation(m_programID, "lights[1].kQ");
m_parameters[U_LIGHT1_SPOTDIRECTION] = glGetUniformLocation(m_programID, "lights[1].spotDirection");
m_parameters[U_LIGHT1_COSCUTOFF] = glGetUniformLocation(m_programID, "lights[1].cosCutoff");
m_parameters[U_LIGHT1_COSINNER] = glGetUniformLocation(m_programID, "lights[1].cosInner");
m_parameters[U_LIGHT1_EXPONENT] = glGetUniformLocation(m_programID, "lights[1].exponent");
m_parameters[U_NUMLIGHTS] = glGetUniformLocation(m_programID, "numLights"); //in case you missed out practical 7
m_parameters[U_TEXT_ENABLED] = glGetUniformLocation(m_programID, "textEnabled");
m_parameters[U_TEXT_COLOR] = glGetUniformLocation(m_programID, "textColor");
// Get a handle for our "colorTexture" uniform
m_parameters[U_COLOR_TEXTURE_ENABLED] = glGetUniformLocation(m_programID, "colorTextureEnabled");
m_parameters[U_COLOR_TEXTURE] = glGetUniformLocation(m_programID, "colorTexture");
glUseProgram(m_programID);
//variable to rotate geometry
//Initialize camera settings
camera.Init(Vector3(0, 5, 100), Vector3(0, 5, 0), Vector3(0, 1, 0));
meshList[GEO_AXES] = MeshBuilder::GenerateAxes("AXES", 1000, 1000, 1000);
Mtx44 projection;
projection.SetToPerspective(45.f, 4.f / 3.f, 0.1f, 100000.f);
projectionStack.LoadMatrix(projection);
light[0].type = Light::LIGHT_POINT;
light[0].position.Set(0, 48, 0);
light[0].color.Set(1, 1, 1);
light[0].power = 1.f;
light[0].kC = 1.f;
light[0].kL = 0.01f;
light[0].kQ = 0.001f;
light[1].type = Light::LIGHT_DIRECTIONAL;
light[1].position.Set(0, 300, -400);
light[1].color.Set(1, 1, 1);
light[1].power = 1;
light[1].kC = 1.f;
light[1].kL = 0.01f;
light[1].kQ = 0.001f;
light[1].cosCutoff = cos(Math::DegreeToRadian(45));
light[1].cosInner = cos(Math::DegreeToRadian(30));
light[1].exponent = 3.f;
light[1].spotDirection.Set(0.f, 1.f, 0.f);
// Make sure you pass uniform parameters after glUseProgram()
glUniform1i(m_parameters[U_LIGHT0_TYPE], light[0].type);
glUniform3fv(m_parameters[U_LIGHT0_COLOR], 1, &light[0].color.r);
glUniform1f(m_parameters[U_LIGHT0_POWER], light[0].power);
glUniform1f(m_parameters[U_LIGHT0_KC], light[0].kC);
glUniform1f(m_parameters[U_LIGHT0_KL], light[0].kL);
glUniform1f(m_parameters[U_LIGHT0_KQ], light[0].kQ);
glUniform1i(m_parameters[U_LIGHT1_TYPE], light[1].type);
glUniform3fv(m_parameters[U_LIGHT1_COLOR], 1, &light[1].color.r);
glUniform1f(m_parameters[U_LIGHT1_POWER], light[1].power);
glUniform1f(m_parameters[U_LIGHT1_KC], light[1].kC);
glUniform1f(m_parameters[U_LIGHT1_KL], light[1].kL);
glUniform1f(m_parameters[U_LIGHT1_KQ], light[1].kQ);
//.........这里部分代码省略.........