编辑:我已经删除了所有纹理和法线贴图,但问题仍然存在
我试图在屏幕上绘制一块地形.渲染函数如下所示:
void TerrainChunk::Render()
{
std::cout << "Render Me!\n";
glColor3f(0.5f, 0.5f, 0.5f)
glDisable(GL_LIGHTING);
for(int x = 1; x < kChunkSize - 1; x++)
{
for(int z = 1; z < kChunkSize - 1; z++)
{
std::cout << height_map_[x][z] << " ";
glBegin(GL_TRIANGLE_STRIP);
glVertex3f(x, height_map_[x][z], z);
glVertex3f(x+1, height_map_[x+1][z], z);
glVertex3f(x, height_map_[x][z+1], z+1);
glVertex3f(x+1, height_map_[x+1][z+1], z+1);
glEnd();
}
std::cout << std::endl;
}
glEnable(GL_LIGHTING);
}
Run Code Online (Sandbox Code Playgroud)
在堆栈上创建对象时
TerrainChunk chunk("chunk1.png", "grass.png");
chunk.Init();
Run Code Online (Sandbox Code Playgroud)
它渲染得很完美.
当我用新的创建它
TerrainChunk *chunk = new TerrainChunk("chunk1.png", "grass.png");
chunk->Init();
Run Code Online (Sandbox Code Playgroud)
没有出现.在这两种情况下,都会调用Render并打印出正确的高度图.我希望这两种情况都表现得相同.
编辑:这是请求的Init()代码.它只是在每次调用Render()时加载我已经验证过的高度图. …
我有一个系统需要在屏幕上移动图像.我目前正在使用png并将其放置在所需的屏幕坐标处.
由于屏幕分辨率和所需帧速率的组合,一些帧是相同的,因为图像尚未移动整个像素.不幸的是,屏幕的分辨率是不可协商的.
我对子像素渲染如何平滑边缘有一个大致的了解,但我一直无法找到资源(如果存在)我如何使用着色来将图像转换少于一个像素.
理想情况下,这可以用于任何图像,但如果它只能用简单的形状像圆形或环形,那也是可以接受的.