![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
光栅渲染器
寂灭万乘
我喜欢代码,因为他能帮我创造另一个世界
展开
-
光栅渲染器(二)画线
这篇着重光栅化2D直线的算法实现一、数据结构设置//************************基本数据结构*******************typedef struct { float x, y; } vector_t;typedef vector_t point_t;//顶点typedef struct { float r, g, b,a; } color_t;//颜色目前还是2d,原创 2017-10-28 19:09:58 · 370 阅读 · 0 评论 -
光栅渲染器(七)线框模型绘制和背部剔除实现
我们曾经完成过按多边形顶点输入完成无填充多边形顶点的绘制,所以现在可以按同样的思路绘制线框模型设置状态 enum _State { normal, wireframe }; _State _state = normal;我们利用这个状态改变模型是之前渲染出的彩色模型还是线框模型设置状态改变条件我们选择用space按键改变当前模型的状态//*******************原创 2017-11-07 00:12:50 · 530 阅读 · 0 评论 -
光栅渲染器(三)光栅化2D三角形
这篇主要讲扫描转换方法光栅化2d三角形之前我们已经完成了线段的绘制,而三角形其实3条线段的首尾相连,所以我们只要给出三个不在同一直线的顶点就能绘制三角形一、完善画线算法Bresenham算法是种相对高效的算法,但目前我项目中的这一算法在顶点x坐标或y坐标相同时还无法完成绘制。所以这一情况下,我选择DDA算法取代。 如下void DrawLine(point_t v1, point_t v2, co原创 2017-10-29 08:59:55 · 1530 阅读 · 0 评论 -
光栅渲染器(四)多边形绘制
暂时找不到合适绘制多边形的算法,就自己丰衣足食,不当之处希望大家指出。绘制凸四边形首先绘制凸四边形,毕竟这个渲染器我最低的要求就是能画个正方体 算法设计:多边形是由多个三角形组合而成。希望通过输入四个顶点绘制多边形,但不能随意指定顶点绘制多边形,否则就是这样 所以我们需要找到不相邻的2个点,通过这2个点,分别跟另外2个点完成2个三角形的绘制,这样就构成了一个多边形 算法实现如下 通过原创 2017-10-29 14:30:11 · 416 阅读 · 1 评论 -
光栅渲染器(五)2d->3d坐标系
前面我们基本完成了光栅渲染器的2d部分,接下来开始光栅渲染器的3d部分吧。不过前面的2d光栅渲染器实际上还有优化的空间,建议大家自己完善一下(实际上,由于博主迫切地想玩3d,实际上漏了很多算法的实现和优化,比如三角形光栅渲染用边缘方程填充,2d直线裁剪,避免重复光栅化等等)设计思路和部分代码参考韦前辈大神的mini3d一、更改数据结构typedef struct { float x, y,z,w=1原创 2017-10-30 23:56:15 · 427 阅读 · 0 评论 -
光栅渲染器(一)配置glut环境,完成窗体绘制
环境准备:VS2017第一步:创建工程文件-》新建项目-》Visual C++ -》控制台应用程序第二步:导入NuGet包选择项目-》右键点击-》管理NuGet程序包-》浏览-》输入Nupengl -》选择第一个安装第三步:配置环境// GLEW//#define GLEW_STATIC#include <GL\glew.h>#include <GL/freeglut.h> // GLFW原创 2017-10-27 13:57:13 · 391 阅读 · 1 评论 -
光栅渲染器(六)着色准备和深度缓存实现
接下来更改一下顶点着色,让这个渲染器更漂亮 首先是数据结构更改数据结构typedef struct { point_t pos; color_t color; } vertex_t;更改顶点输入vertex_t mesh[8] = { { { 1, -1, 1, 1 },{ 1.0f, 0.2f, 0.2f } }, { { -1, -1, 1, 1 },{ 0.2f, 1.0原创 2017-11-01 22:30:23 · 405 阅读 · 1 评论