OpenGL入门
wyg1997
恰如猛虎卧荒丘,潜伏爪牙忍受。
展开
-
在OpenGL中绘制圆
#include<GL/glut.h>#include<math.h>const double PI = acos(-1.0);void myDisplay(){ glClear(GL_COLOR_BUFFER_BIT); //清除。GL_COLOR_BUFFER_BIT表示清除颜色 float R = 0.5f; int n = 80; //这里原创 2017-04-14 15:02:01 · 23314 阅读 · 6 评论 -
OpenGL - 连续绘制三次B样条曲线
计算公式: 使用说明:鼠标在窗口点击绘制B样条曲线,鼠标右键移动控制点。退格键(←)删除鼠标所在的点。运行效果: 代码如下:#include<gl/glut.h>#include<math.h>#include<windows.h>#include<vector>#include<algorithm>using namespace std;bool mouseRightIsDown原创 2017-10-19 11:43:10 · 9835 阅读 · 8 评论 -
OpenGL - Hermite算法多点画光滑曲线
本来以为矩阵求方程是最难的,没想到写个高斯消元一下就解决了,十分钟就写完了解方程的部分。然后花了将近四个小时查bug(QAQ)说一下算法思路: 根据上一篇博客(传送门:点击打开链接),我们可以根据两点用Hermite算法绘制三次曲线。但是考虑多点问题时,光滑连接就是主要问题了,如果我们能求出中间点的切矢,那么就可以两两点绘制了。 所以我们的主要问题就是求出中间点的切矢。我们知道,中间点和其左右点原创 2017-10-16 17:17:39 · 3032 阅读 · 0 评论 -
OpenGL + MFC界面设置优化
一、最大化子窗口并隐藏标题栏: 1.在类视图中打开CChildFrame的类向导,添加OnCreate函数: (On…什么的函数都是在消息那个标签里,输入后面的单词就能快速查找到了) 键入代码:int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CMDIChildWnd::OnCreate(lpCreat原创 2017-11-07 17:27:48 · 830 阅读 · 0 评论 -
OpenGL+MFC编程入门(VS2013)
学OpenGL的时候老师总是说MFC的程序,一直觉得不好弄就先没学,这次在实验中出现了,不得不慢慢百度着学习了。感觉刚开始无从下手,所以这这里记录下来过程,也方便看的人少走弯路吧。一、创建MFC项目。 照着图片选择完毕后,点击完成。创建好的结果是这样的: 二、导入OpenGL头文件以及lib文件。 首先在stdafx.h中添加OpenGL的头文件: 然后导入lib文件: 右键解决方原创 2017-10-25 20:25:52 · 3898 阅读 · 1 评论 -
OpenGL - 光照
这个是书上的代码,就是一个茶壶加上光照。以后学深了再补。运行效果: 代码如下:#include<cstdio>#include<GL\glut.h>#include<Windows.h>#include<algorithm>using namespace std;void init(){ GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0原创 2017-11-08 16:47:39 · 559 阅读 · 0 评论 -
OpenGL直线剪裁
这次是用MFC+OpenGL写的,代码没法全部贴上,上传到下载栏目里好了。点击打开下载链接(现在好像不能上传0积分下载的东西了QAQ)运行效果: 核心代码(剪裁的核心代码):int GraphyCut::getCode(const Point a) //得到编码{ int code = 0; if (a.y > max(st.y, endd.y))原创 2017-11-08 16:41:48 · 908 阅读 · 0 评论 -
OpenGL实现Hermite算法绘制三次曲线
首先是推导:节省功夫我就直接贴照片了。 程序加了鼠标的监听器,可以移动控制点和型值点。 注意:图片中矩阵第二行第二列应该为3,当时笔误程序效果: 代码如下:#include<gl/glut.h>#include<math.h>#include<windows.h>#include<algorithm>using ...原创 2017-10-13 17:20:33 · 4781 阅读 · 4 评论 -
MFC菜单设置
1.打开菜单界面: 2.设置点击的处理程序: 3.编辑代码:注意这里不要写画图的代码什么的,这里控制改变某个变量,让OnDraw函数取处理不同的情况!以下是我生成随机线段的代码,这个可以自己根据情况写代码。 最后一行通知画图函数是必须的。void CTestView::OnCreateLine(){ //Debug //lines.push_back(Line(Point(5原创 2017-11-07 18:10:44 · 808 阅读 · 0 评论 -
OpenGL常用图形
绘制方式 解释 GL_POINTS 点 GL_LINES 线段 GL_LINE_STRIP 多段线 GL_LINE_LOOP 线圈 GL_TRIANGLES 三角形 GL_TRIANGLE_STRIP 三角形条带 GL_TRIANGLE_FAN 三角形扇原创 2017-10-09 18:41:16 · 1821 阅读 · 0 评论 -
OpengGL - 旋转彩色立方体(glDrawElements & 鼠标键盘操作 & 三维图形变换)
程序运行效果: 代码如下:#include<gl/glut.h>#include<math.h>#include<windows.h>#include<algorithm>using namespace std;const GLubyte index[] = { 0, 3, 2, 1, 2, 3, 7, 6, 0, 4, 7, 3, 0, 1, 5, 4, 1, 2, 6, 5, 4,原创 2017-10-18 12:21:02 · 1753 阅读 · 1 评论 -
OpenGL常用函数记录
openGL 窗口到视口的变换以及gluOrtho2D与glViewport比较:点击打开链接Glut处理鼠标事件:点击打开链接OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解:点击打开链接OpenGL键盘控制键值:点击打开链接原创 2017-10-12 10:22:44 · 312 阅读 · 0 评论 -
OpenGL - 旋转四棱锥
鼠标左键加速旋转,右键减速。代码如下:#include<gl/glut.h>#include<math.h>#include<windows.h>#include<algorithm>using namespace std;float angle = 0;float speed = 0.1;void myDisplay(){ glClear(GL_COLOR_BUFFER_B原创 2017-10-17 19:32:22 · 2195 阅读 · 0 评论 -
OpenGL——DDA算法
优化了书上的DDA算法,可以画任意两点的线段。#include<gl/glut.h>#include<math.h>#include<windows.h>#include<algorithm>using namespace std;const float COLOR[7][3] = { { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.原创 2017-09-27 20:26:26 · 1229 阅读 · 0 评论 -
OpenGL - 三次Bezier曲线的绘制
计算公式: 运行结果: 代码如下:#include<gl/glut.h>#include<math.h>#include<windows.h>#include<vector>#include<algorithm>using namespace std;struct Point{ int x, y; Point(){}; Point(int tx, int t原创 2017-10-18 20:01:44 · 6518 阅读 · 3 评论