本文整理汇总了C++中Terrain::GetHeightMap方法的典型用法代码示例。如果您正苦于以下问题:C++ Terrain::GetHeightMap方法的具体用法?C++ Terrain::GetHeightMap怎么用?C++ Terrain::GetHeightMap使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Terrain
的用法示例。
在下文中一共展示了Terrain::GetHeightMap方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Render
void TerrainDeformationProgram::Render(RenderQueue* rq){
ShaderProgram* prog = g_ShaderBank.GetProgramFromHandle(m_DrawProgram);
prog->Apply();
glBindVertexArray(0);
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE); //additive
for (auto& td : rq->GetDeformations()){
Terrain* terrain = g_TerrainManager.GetTerrainFromHandle(td.Terrain);
glm::vec2 textureSize = terrain->GetHeightHighResSize();
m_FrameBuffer->SetTexture(terrain->GetHeightMap(), textureSize.x, textureSize.y);
m_FrameBuffer->Apply();
glViewport(0, 0, textureSize.x, textureSize.y);
//prog->SetUniformTextureHandle("g_Texture", m_BrushTexture, 0);
m_BrushTex->Apply(prog->FetchUniform("g_Texture"), 0);
prog->SetUniformVec4("g_Pos", glm::vec4(td.Position.x , 1.0f - td.Position.y, 0, 0));
prog->SetUniformVec4("g_Size", glm::vec4(td.Size, 1, 1));
glm::vec3 dir = td.Up ? glm::vec3(1) : glm::vec3(0);
prog->SetUniformVec4("g_Color", glm::vec4(dir, td.Strength));
prog->SetUniformBool("g_GreyScale", false);
glDrawArrays(GL_POINTS, 0, 1);
//filter area
glm::vec4 pixelArea = glm::vec4((td.Position * textureSize) - glm::vec2(-2), (td.Size * textureSize) + glm::vec2(4));
const int WORK_GROUP_SIZE = 32;
GLuint WorkGroupSizeX = GLuint((pixelArea.z + WORK_GROUP_SIZE - 1) / float(WORK_GROUP_SIZE));
GLuint WorkGroupSizeY = GLuint((pixelArea.w + WORK_GROUP_SIZE - 1) / float(WORK_GROUP_SIZE));
ShaderProgram* prog = g_ShaderBank.GetProgramFromHandle(m_FilterProgram);
prog->Apply();
prog->SetUniformVec4("g_PixelArea", pixelArea);
glBindImageTexture(0, terrain->GetHeightMap(), 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_R32F);
glDispatchCompute(WorkGroupSizeX, WorkGroupSizeY, 1);
}
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_BLEND);
}
示例2: parser
Terrain *TerrainCreator::createTerrain(game::GameMap *gameMap, ui::LightManager *lightManager, ui::AmbientSoundManager *ambientSoundManager, const char *configFile)
{
/*
std::string textFileName = configFile;
textFileName += "/legacy.txt";
Parser::Parser parser(textFileName.c_str());
const Parser::string_map scene_properties = parser.GetProperties();
std::string forceMapName = Parser::GetString(scene_properties, "forceheightmap");
*/
std::string forceMapName;
Terrain *terrain = new Terrain(storm3d, scene, configFile, forceMapName.c_str(), gameMap->getAreaMap(), gameMap, lightManager, ambientSoundManager);
int memRes = game::SimpleOptions::getInt(DH_OPT_I_TERRAIN_MEMORY_RESERVE);
if (memRes < 0) memRes = 0;
int preCache = game::SimpleOptions::getInt(DH_OPT_I_TERRAIN_MEMORY_PRECACHE);
if (preCache < 0)
preCache = 0;
if (preCache > memRes)
preCache = memRes;
// terrain->GetTerrain()->SetMemoryReserve(memRes);
// terrain->GetTerrain()->SetPreCache(preCache);
std::string binFileString = configFile;
binFileString += "/scene.bin";
// These maps should really come from bin file
gameMap->setData(terrain->GetHeightMap(), terrain->GetDoubleHeightMap(), terrain->getHeightMapSize(),
terrain->getTerrainSize(), terrain->getTerrainHeight(), binFileString.c_str());
gameMap->setTerrain(terrain->GetTerrain());
// set proper maps and stuff to light amount manager
util::LightAmountManager::getInstance()->setMaps(gameMap, terrain->GetTerrain());
terrain->GetTerrain()->setObstacleHeightmap(gameMap->getObstacleHeightMap(), gameMap->getAreaMap());
// Haxhax, initialize here for now
IStorm3D_Material *shadowMaterial = storm3d->CreateNewMaterial("shadow_decal");
shadowMaterial->SetBaseTexture(storm3d->CreateNewTexture("shadow_decal.tga"));
terrain->GetTerrain()->getDecalSystem().setShadowMaterial(shadowMaterial);
return terrain;
}