c++ - 如何使用模型矩阵在游戏循环中渲染帧?
问题描述
我正在开发一个非常基本的 3d 游戏引擎。我的游戏循环是这样的:
void draw()
{
shader->bindShader();
for(entity in entityList)
{
mat4 modelMat=entity.getModelMat();
shader->sendUniform("model_matrix",&modelMat);//sending model matrix to shader
glDraw(...)//draw call
}
}
void gameLoop()
{
init();
draw();//drawing objects for the first time
while(true)//game loop
{
handlingEvents();//calculate model matrices based on inputs
renderScene();//this function renders the scene on current frame
}
}
这是我的顶点着色器:
uniform mat4 projection_matrix;
uniform mat4 view_matrix;
uniform mat4 model_matrix;
void main()
{
gl_Position = projection_matrix*view_matrix*model_matrix*vec4(gl_Vertex.xyz,1);
}
目前我正在通过简单地清除所有内容并使用新模型矩阵再次绘制场景来渲染场景。所以我的问题是有没有一种方法可以更新每个对象,而无需在每一帧上清除和绘制整个场景?
解决方案
推荐阅读
- javascript - 使用客户端的参数根据用户留在命令中的参数创建自定义嵌入消息(Discord JS)
- javascript - JQuery自动完成返回带有标签和值的数据数组,但不显示标签作为建议
- sql-server - 来自 MDX OLEDB 源 SSIS 的变量的 SQL 命令
- forms - 为什么 HTML 表单将“&”转换为“&”?
- python - Selenium 日志错误 Python 3.7
- angular - Bootstrap 4轮播指示器不适用于Angular 7
- c# - 在 C# 中使用 IP 检查 SSL 证书的 SSL 有效性
- deployment - Travis CI:如何有条件地运行提供者部署作业?
- .net - 如何在c#中的Web浏览器控件中单击html提交按钮后获取重定向url?
- jquery - 如何在 AJAX 插入为 Flash 消息后加载部分视图