平面棋盘的绘制——Opengl之3D象棋(1)

综述:


计算机图形学教材中有多种绘图方法,如直线的DDA算法、正负法、Bresenham算法和画圆弧的正负法和Bresenham算法。


OpenGL类库也为我们提供了多种绘图方法,比如 glVertex2d,在这里我们用类库的方法来实现一个机器人的绘制。DDA等算法实现之后我们再替换类库的 glVertex2d 方法。

绘制目标:


平面棋盘的绘制——Opengl之3D象棋(1)_第1张图片


我们可以发现,我们需要绘制的是圆弧和直线,以及粗的边框线;


绘制算法:


首先在我的第一篇博客中已经写了基础的OPENGL的应用方式,大家对于这些小基础还不清楚的我就在这里不重复讲了,可以去看看本人的上一篇博客: opengl入门综述


1、先说系统提供的方法:


(1)点和直线

在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点。另一方面,无论图形输出设备(例如,显示器)如何精确,始终不能输出一个无穷小的点。一般情况下,OpenGL中的点将被画成单个的像素(像素的概念,请自己搜索之~),虽然它可能足够小,但并不会是无穷小。同一像素上,OpenGL可以绘制许多坐标只有稍微不同的点,但该像素的具体颜色将取决于OpenGL的实现。

多边形是由多条线段首尾相连而形成的闭合区域。OpenGL规定,一个多边形必须是一个“凸多边形”(其定义为:多边形内任意两点所确定的线段都在多边形内,由此也可以推导出,凸多边形不能是空心的)。


OpenGL提供了一系列函数指定一个点。它们都以glVertex开头,后面跟一个数字和1~2个字母。例如:

glVertex2d、glVertex2f、glVertex3f、glVertex3fv。。。
数字表示参数的个数,2表示有两个参数,3表示三个,4表示四个
字母表示参数的类型,s表示16位整数、i表示32位整数、f表示32位浮点数、 d表示64位浮点数、v表示传递的几个参数将使用指针的方式。


这些函数除了参数的类型和个数不同以

你可能感兴趣的:(图形学Opengl,Breseham直线生成算法,DDA直线生成算法,圆弧生成算法,opengl,vc++)