我需要为我的地形纹理实时渲染渲染动画; 这样做的最佳渲染方法是什么?通过调整纹理坐标来完成动画.
我有一个预先构建的数组用于所有动画帧纹理坐标,如果你让opengl知道所有的动画帧或什么东西,有没有办法让动画更快地渲染?
地形多边形位置也可能几乎实时变化......它不是高度图.我想用for循环或其他东西一次只渲染一部分地形.
目前我正在使用显示列表,并且更新它们的速度非常慢......但是到目前为止,渲染它们的速度最快.
如何在2D游戏中随机形成孤岛?我不知道怎么开始!
void generateMap()
{
blocks.clear();
for(int x = 0; x < 150; x++)
{
for(int y = 0; y < 150; y++)
{
if(Math.random() < 0.5)
blocks.add(new Block(x * Block.blockSize, y * Block.blockSize, eBlockType.GRASS));
else
blocks.add(new Block(x * Block.blockSize, y * Block.blockSize, eBlockType.WATER));
}
}
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试确定任意位置的地形类型。例如,如果我使用谷歌地图,我可以通过地图上显示的颜色直观地看到什么地形是森林、建筑区域和水域。
我正在尝试查看是否可以使用任何类型的 API 调用来获取此基本信息。我不需要它非常精确,而且我真的不需要确定确切的地形类型(所以像 Corine Land Cover 这样的东西纯粹是矫枉过正)。我需要每隔几分钟提出一些这样的请求。我发现一个大约三年前提出的问题并没有真正解决,我希望现在有所改变。
有什么我可以用的吗?我实际上正在考虑自己读取显示的地图图块并获取像素颜色,但如果有更简单的方法,我将不胜感激。
我想通过代码更改地形纹理的偏移量(2)。我添加了道路图像作为地形上的纹理。我在网上找到了相关代码,但我无法弄清楚渲染器在这种情况下的作用。
除了代码之外,我只想知道通过代码更改纹理应该采取的第一步。(基本设置)。还有请提一下渲染器的作用。
我正在尝试创建一个新的游戏,其中车辆沿着地面行驶,但也有能力使用推进器暂时空降.
我对游戏编程比较陌生,但我擅长编写Java,C,C++等编码,所以我不认为这应该是一个问题(认为游戏的第一次迭代是用Java编写的).我的问题是,我从头开始,并没有想到地形成为障碍的方式,因此车辆不会直接通过它.我怎么能让它们受到坠落伤害呢?
在过去,人们已经把我带到了副本岛,因为它已经存在了,我看到整个碰撞系统,但到目前为止我还没有理解它,我希望有人愿意借给我一只手.
谢谢
-Roflha
我一直在搜索谷歌和亚马逊,但在基于四叉树的LOD地形上找不到任何合适的来源.有些人只是解释了粗略的概念,但我已经知道我需要的是一些带有注释的例子.

目的是什么:
我对线程比较陌生.我一直在尝试制作四叉树渲染的地形,这将快速有效地渲染.如果全部处于最大细节,则当前渲染的地形量将主要滞后于用户.这就是我使用QuadTree渲染它的原因.该引擎还支持输入和物理,因此我决定使用渲染线程.这导致了很多问题.
问题('s): 当我没有线程时,由于引擎中的其他系统存在一些滞后.造成延迟的主要原因是QuadTree中地形的加载和删除(我甚至不确定这是否是最佳方式.)现在,渲染发生得非常快,并且似乎没有滞后.当相机静止不动时,游戏运行良好.我让游戏运行了一个小时,没有发现崩溃.
加载terrain时,它使用渲染代码使用的几个变量.即,绑定缓冲区 -
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, normalbuffer);
glBufferData(GL_ARRAY_BUFFER, normals.size() * sizeof(glm::vec3), &normals[0], GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, uvbuffer);
glBufferData(GL_ARRAY_BUFFER, uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);
Run Code Online (Sandbox Code Playgroud)
我认为这个变量与另一个线程同时被访问.这会导致崩溃.如何解决这个问题?我尝试过使用互斥锁,但这似乎不起作用.我将锁定和解锁互斥锁以解决此问题?
另一个似乎导致相同错误的变量是"IsLeaf".
加载大量地形后会导致另一次崩溃(std :: badAlloc).即使它正在清理.我认为这是由于我的删除代码,但我不知道什么是错的.
我当前添加和删除切片的方式是从相机检查范围并删除/创建切片.我想渲染我正在打开的瓷砖和它周围的瓷砖.但是,从4个主要切片中的一个切换时,这不起作用.使用范围创建不起作用,因为它是大瓷砖中心的范围而不是较小的瓷砖.我也尝试每隔几秒删除整个地图,这似乎也有效但但滞后更多.有没有更好的方法来创造和破坏?
在不同的决议之间存在差距.反正有减少这些吗?目前我渲染的瓷砖比它们需要的大一点,但这对主要的分辨率变化没有帮助.
如果您有任何想法如何解决其中一个错误,我们将不胜感激.
代码(这里上传太多了)
使用Unity3D引擎.我正在使用Unity的标准网络制作多人游戏.如果服务器拥有25-50名玩家,建议使用哪种地图尺寸?在它对于有效的游戏玩法来说太大之前,我可以制作一个非常详细的地图有多大?如何优化大型地图?任何想法和建议都会很棒,我只是想学习,在谷歌上找不到任何关于这个的东西:D
*我的地图被分成不同的部分.
我已经四处搜索,但找不到任何像我正在尝试做的那样不以某种方式使用 Three.js 的东西(我无法使用 Three.js,因为我的计算机太旧了,无法支持 Webgl)。这是我到目前为止所得到的:
HTML:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="terrain.js"></script>
<title>Terrain</title>
</head>
<body>
<canvas id="canvas" height="400" width="400"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
var canvas, ctx, row1 = [], row2 = [], intensity = 15, width = 20, height = 20, centery = 200, centerx = 200, minus, delta = 1.6, nu = .02;
window.onload = function() {
canvas = document.getElementById('canvas'), ctx = canvas.getContext('2d');
ctx.lineStyle = '#000'
for (var i = 0; i < height; i++) {
row2 = []; …Run Code Online (Sandbox Code Playgroud) 我有一个地形和立方体。地形附加了地形对撞机,立方体上有盒子对撞机。但是立方体仍然在地形中坠落。我尝试了其他问题和其他论坛中解释的很多事情,但没有一个解决了问题。立方体和地形设置的屏幕截图附在下面。
我是3D游戏编程的新手,现在正在Windows上研究DirectX和OpenGL.但我想出了一个地形编辑器,但我无法在网上获得任何开放的教程或想法.
有没有一个很好的教程或开源代码来学习这个?
简单的一个很好,我只是想知道如何提升或降低地形,或在地图上放一棵树,如下面的视频.
问题是:通常情况下,脚本应该在周围的玩家一个立方体产生16个预制件,当我启动它工作得很好,因为它呼吁启动功能的产生,但是当我在另一块步骤与第一人控制它生成那些16块每秒钟,它会产生很多滞后现象并且真的很糟糕,不应该产生那么多预制件,任何帮助都非常值得赞赏.非常感谢你.
我不认为这是一个大问题,因为这是允许的,但在连续几天尝试解决这个问题之后,它似乎仍然无法正常工作.所以这就是我得到的:
infiniteTerrain附加到第一个人控制器.txt文件中,以便在需要时加载它们以最小化滞后量. chunkRename附加到生成的每个块以下是脚本:
infiniteTerrain.js
#pragma strict
var terrains : GameObject[];
var newworld = true;
var trees : GameObject[];
var vegetation : GameObject[];
var rivers : GameObject[];
var mountains : GameObject[];
var playerTerrainUnavailable = false;
var x = 50;
var z = 50;
var y = 100;
var cameraDirection : float;
var chunkWidth = 50;
var chunk1 = " ";
var chunk2 = " ";
var …Run Code Online (Sandbox Code Playgroud) terrain ×13
opengl ×4
c++ ×3
java ×3
c# ×2
quadtree ×2
2d ×1
android ×1
boo ×1
collider ×1
directx ×1
game-engine ×1
game-physics ×1
google-maps ×1
heightmap ×1
html5-canvas ×1
javafx ×1
javafx-3d ×1
javascript ×1
maps ×1
mesh ×1
renderer ×1
rendering ×1
textures ×1
unityscript ×1