本文整理汇总了C++中Terrain::SetHeight方法的典型用法代码示例。如果您正苦于以下问题:C++ Terrain::SetHeight方法的具体用法?C++ Terrain::SetHeight怎么用?C++ Terrain::SetHeight使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Terrain
的用法示例。
在下文中一共展示了Terrain::SetHeight方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
Display window("Window", 1500, 800);
Camera camera(glm::vec3(0.0f, 0.0f, 0.0f), 70.0f, (float)window.GetReference().getSize().x / (float)window.GetReference().getSize().y, 0.1f, 1800.0f);
BasicShader terrain_shader;
terrain_shader.loadFromFile("./res/shader/BasicShader");
BasicShader skaybox_shader;
skaybox_shader.loadFromFile("./res/shader/BasicShader");
BasicShader grass_shader;
grass_shader.loadFromFile("./res/shader/BasicShader");
grass_shader.SetMinLightStr(0.7);
grass_shader.SetMaxLightStr(1.0);
BasicShader model_shader;
model_shader.loadFromFile("./res/shader/BasicShader");
Skaybox skaybox;
skaybox.SetShader(skaybox_shader);
skaybox.AtachCamera(camera);
skaybox.SetBack("./res/skybox2/skybox_back.bmp");
skaybox.SetFront("./res/skybox2/skybox_front.bmp");
skaybox.SetLeft("./res/skybox2/skybox_left.bmp");
skaybox.SetRight("./res/skybox2/skybox_right.bmp");
skaybox.SetBotom("./res/skybox2/skybox_bottom.bmp");
skaybox.SetTop("./res/skybox2/skybox_top.bmp");
skaybox.SetSize(1000);
skaybox.Init();
Terrain terrain;
terrain.LoadFromFile("./res/height_maps/TestMap.png");
terrain.SetTexture("./res/texture/grass_m.jpg");
terrain.SetShader(terrain_shader);
terrain.AtachCamera(camera);
terrain.SetHeight(25);
terrain.Init();
Mesh Grass[100];
Mesh Tree[25];
for (int i = 0; i < 100; i++) {
Grass[i].LoadMesh("./res/models/Grass pack/Grass_02.obj");
Grass[i].SetShader(grass_shader);
Grass[i].AtachCamera(camera);
int x = 0 + rand() % (int)terrain.GetSize().x ;
int y = 0 + rand() % (int)terrain.GetSize().y ;
Grass[i].SetPosition(x,terrain.GetHeightOnPoint(x,y)-0.4,y);
}
for (int i = 0; i < 25; i++) {
Tree[i].LoadMesh("./res/models/Tree/Tree.obj");
Tree[i].SetShader(model_shader);
Tree[i].AtachCamera(camera);
int x = 0 + rand() % (int)terrain.GetSize().x;
int y = 0 + rand() % (int)terrain.GetSize().y;
Tree[i].SetPosition(x, terrain.GetHeightOnPoint(x, y) - 0.4, y);
}
sf::Clock clock;
float speed;
camera.setPosition(glm::vec3(terrain.GetSize().x / 2, 8, terrain.GetSize().y / 2-3));
while (window.GetHandle()->isOpen())
{
speed = clock.getElapsedTime().asSeconds()*70;
clock.restart();
sf::Event event;
while (window.GetHandle()->pollEvent(event))
{
//debug.Event(event, window.GetReference());
if (event.type == sf::Event::Closed) {
window.GetHandle()->close();
return EXIT_SUCCESS;
}
if (event.type == sf::Event::Resized) {
camera.forResize((float)window.GetReference().getSize().x / (float)window.GetReference().getSize().y);
window.Resize();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) {
window.GetHandle()->close();
return EXIT_SUCCESS;
}
}
if (window.GetReference().hasFocus() && !sf::Keyboard::isKeyPressed(sf::Keyboard::LControl)) {
camera.Update(window.GetReference(),speed);
}
//.........这里部分代码省略.........