图形学
天律界中子
这个作者很懒,什么都没留下…
展开
-
帧率(FPS)计算的六种方法总结
帧率(FPS)计算是游戏编程中常见的一个话题。大体来说,总共有如下六种方法:固定时间帧数法帧率计算的公式为:fps = frameNum / elapsedTime;如果记录固定时间内的帧数,就可以计算出同步率。此种方法用得较多。int fps(){ static int fps = 0; static int lastTime = getTime(); // ms sta原创 2016-11-27 22:32:28 · 69195 阅读 · 4 评论 -
glDrawElements崩溃的一种可能原因
今天在实现《OpenGL编程指南》第三章的例子时,出现在调用glDrawElements时崩溃的问题,试验后,发现原来是没有绑定EBO。出现崩溃时的例子源码如下:void init(){ ... glGenVertexArrays(1, &g_VAO); glBindVertexArray(g_VAO); glGenBuffers(1, &g_VBO); glB原创 2016-12-18 22:04:47 · 4528 阅读 · 3 评论 -
OpenGL清理缓存的两种方法
在OpenGL中,对每一帧进行渲染前,我们可能会需要清理帧缓存中的旧数据,包括颜色缓存、深度缓存和模板缓存。通常来说,我们会使用以下方法:初始化时,调用glClearColor()、glClearDepth()及glClearStencil()分别设置清空后颜色缓存、深度缓存和模板缓存中的默认值;在每一帧渲染前,调用glClear()并传入GL_COLOR_BUFFER_BIT、GL_DEPTH原创 2017-01-12 23:04:57 · 11413 阅读 · 0 评论 -
CGAL配置后使用时遇到的一些问题及解决方法
配置CGAL无需赘述,按照官网的教程一步步来即可。 配置完成后,我们可能会需要创建一个自己的项目,来使用CGAL。 假设我们使用Visual Studio创建一个最简单的项目,里面仅包含一个main.cpp文件:#include "CGAL/Polyhedron_3.h"int main(){ return 0;}明显地,我们需要将F:\OpenSource\CGAL-4.9\inc原创 2017-02-13 18:02:48 · 6119 阅读 · 0 评论 -
.obj文件中顶点数据的合并
在OpenGL中,为了减少顶点数据所占用的内存,通常会合并具有相同属性的顶点,然后使用顶点的索引进行绘制。举例来说,对于xz平面上中心在原点的的单位正方形,需要两个三角形来表示它,于是一共需要六个顶点:// 第一个三角形v1: 位置vec3(-0.5, 0.0, 0.5),纹理坐标(0.0, 0.0),法向量(0.0, 1.0, 0.0)v2: 位置vec3( 0.5, 0.0, 0.5原创 2017-04-25 21:46:28 · 3190 阅读 · 0 评论 -
OpenGL由FOVY计算FOVX
在项目中遇到这样一个问题:已知摄像机垂直方向的FOV为FOVY,摄像机与近裁剪平面的距离为n,裁剪平面的宽高比为aspect,求摄像机水平方向的FOVFOVX。设近裁剪平面窗口的宽度为w,高度为h,则:tan(FOVY / 2) = h / (2n);tan(FOVX / 2) = w / (2n) = aspect * h / (2n) = aspect * tan(FOVY / 2);于是可以原创 2017-04-26 23:11:36 · 4250 阅读 · 0 评论