本文整理汇总了C++中Terrain::SetProgram方法的典型用法代码示例。如果您正苦于以下问题:C++ Terrain::SetProgram方法的具体用法?C++ Terrain::SetProgram怎么用?C++ Terrain::SetProgram使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Terrain
的用法示例。
在下文中一共展示了Terrain::SetProgram方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char **argv)
{
//srand(time(0));
Engine* engine = new Engine();
engine->Init();
engine->GetShader_Manager()->CreateProgram("baseShader",
"Shaders\\Base_Vertex_Shader.glsl",
"Shaders\\Base_Fragment_Shader.glsl");
engine->GetShader_Manager()->CreateProgram("skyboxShader",
"Shaders\\SkyboxVertexShader.glsl",
"Shaders\\SkyboxFragmentShader.glsl");
engine->GetShader_Manager()->CreateProgram("importedModelShader",
"Shaders\\ImportedVertexShader.glsl",
"Shaders\\ImportedFragmentShader.glsl");
engine->GetShader_Manager()->CreateProgram("terrainShader",
"Shaders\\TerrainVertexShader.glsl",
"Shaders\\TerrainFragmentShader.glsl");
engine->GetShader_Manager()->CreateProgram("bulletShader",
"Shaders\\BulletVertexShader.glsl",
"Shaders\\BulletFragmentShader.glsl");
Skybox* skybox = new Skybox();
skybox->SetProgram(engine->GetShader_Manager()->GetShader("skyboxShader"));
skybox->Create(engine->GetScene_Manager());
engine->GetModels_Manager()->SetModel("skybox", skybox);
Terrain* terrain = new Terrain();
terrain->SetProgram(engine->GetShader_Manager()->GetShader("terrainShader"));
terrain->Create("maps\\map.bmp");
engine->GetModels_Manager()->SetModel("map", terrain);
for (int i = 0; i < 50; i++)
{
Tree1* tree = new Tree1();
tree->SetProgram(engine->GetShader_Manager()->GetShader("importedModelShader"));
int signX = rand() % 2 ? 1 : -1;
int signZ = rand() % 2 ? 1 : -1;
tree->Create("models\\Tree1\\tree.obj", ((((float)rand()) / (float)RAND_MAX) * (signX * 65 - signX * 3)) + signX * 3, ((((float)rand()) / (float)RAND_MAX) * (signZ * 65 - signZ * 3)) + signZ * 3);
std::string tmp = "";
sprintf((char*)tmp.c_str(), "tree_%d", i);
engine->GetModels_Manager()->SetModel(tmp, tree);
}
for (int i = 0; i < 8; i++)
{
int XorZ = rand() % 2;
int signX = rand() % 2 ? 1 : -1;
int signZ = rand() % 2 ? 1 : -1;
GLfloat Xoffset = ((((float)rand()) / (float)RAND_MAX) * (signX * 60 - signX * 3)) + signX * 3;
GLfloat Zoffset = ((((float)rand()) / (float)RAND_MAX) * (signZ * 60 - signZ * 3)) + signZ * 3;
for (int j = 0; j < 4; j++)
{
CubeIndex* box = new CubeIndex();
box->SetProgram(engine->GetShader_Manager()->GetShader("importedModelShader"));
XorZ == 0 ? box->Create(Xoffset + j*2, 0, Zoffset) : box->Create(Xoffset, 0, Zoffset + j*2);
std::string tmp = "";
sprintf((char*)tmp.c_str(), "bunch_%d_#box_%d", i, j);
engine->GetModels_Manager()->SetModel(tmp, box);
}
for (int j = 0; j < 3; j++)
{
CubeIndex* box = new CubeIndex();
box->SetProgram(engine->GetShader_Manager()->GetShader("importedModelShader"));
XorZ == 0 ? box->Create(Xoffset + 1 + j * 2, 2, Zoffset) : box->Create(Xoffset, 2, Zoffset + 1 + j * 2);
std::string tmp = "";
sprintf((char*)tmp.c_str(), "bunch_%d_#box_%d", i, j+4);
engine->GetModels_Manager()->SetModel(tmp, box);
}
for (int j = 0; j < 2; j++)
{
CubeIndex* box = new CubeIndex();
box->SetProgram(engine->GetShader_Manager()->GetShader("importedModelShader"));
XorZ == 0 ? box->Create(Xoffset + 2 + j * 2, 4, Zoffset) : box->Create(Xoffset, 4, Zoffset + 2 + j * 2);
std::string tmp = "";
sprintf((char*)tmp.c_str(), "bunch_%d_#box_%d", i, j + 7);
engine->GetModels_Manager()->SetModel(tmp, box);
}
CubeIndex* box = new CubeIndex();
box->SetProgram(engine->GetShader_Manager()->GetShader("importedModelShader"));
XorZ == 0 ? box->Create(Xoffset + 3, 6, Zoffset) : box->Create(Xoffset, 6, Zoffset + 3);
std::string tmp = "";
sprintf((char*)tmp.c_str(), "bunch_%d_#box_9", i);
engine->GetModels_Manager()->SetModel(tmp, box);
}
Tank* tank = new Tank();
tank->SetProgram(engine->GetShader_Manager()->GetShader("importedModelShader"));
//.........这里部分代码省略.........