我是跟着这个教程学的http://download.csdn.net/detail/wd1603926823/9368086

鱼眼校正---拼接融合-----全景漫游,前两步都过了一下,在泊松融合上停留了差不多一个月,拖了太久,从昨天开始决定踏入第三步全景漫游,首先学习OpenGL,昨天基本上找了一天资料,然后用VC++6.0配置OpenGL,我是按照http://blog.csdn.net/makenothing/article/details/8451573这个人的进行配置的,全部配置好后,运行这个test程序,结果还是显示说没有glut.h这个头文件   我明明配置的时候放进GL文件夹里了啊:

这个再想想  不配置好就不能继续往下学了  肯定要实践的  另外我买了本蓝宝书  不知道怎样 还没到

http://wiki.jikexueyuan.com/project/modern-opengl-tutorial/这个资料不错http://learnopengl-cn.readthedocs.org/zh/latest/   https://github.com/cybercser/OpenGL_3_3_Tutorial_Translation

我改用了VS2013配置,终于配置成功了哈哈:

VS2013的界面果然够酷炫 这就是为什么我一定要装个比2010高的版本  除了因为我的VS2010配置了OpenCV2.4.9 我怕哪天因为我手贱乱删了什么崩溃导致我所有程序没了   还因为这个全黑的界面   多么酷炫啊哈哈!终于可以跟着教程实践学OpenGL了  好开森!!!

第二课是讲绘制点、直线和多边形,实现了几个例子:

书上没有根号 居然出来也是个五角星  其实应该用数学算是有根号的

这是本来是两个点  但OpenGL默认大小是一个像素  所以根本看不出来  其实是有的

第三课进的是几何图形绘制的细节:

这是将点的大小改变了显示出来的效果

绘制的正面、反面的多边形     下面是画虚线

下面是剔除多边形的表面:

第四课开始讲颜色了  用彩色画矩形  用指定颜色清除屏幕(其实就是把整个屏幕变成那个颜色):

第五课和第六课的 那个绘制太阳系以及显示太阳、地球、月亮的动画 都显示不出来 显示出来的窗口上面什么都没有??  只显示坐标出来了:

但是定义的那个窗口本该出现动画的 却没出现  不知道为什么??

第七课开始讲光照了,实例部分是地球围绕太阳转 光线的变化:

是一个动画 用了上节课的动画的一点知识  结合这节课的光源的设置、材质设置等  感觉好好玩啊

第八课开始讲显示列表了   实例是绘制一个旋转的正四面体 宏定义那里居然还用了一个do while的循环  我之前都没见过这种宏定义 后面居然还用到了堆栈  那里没看太懂  按照教程的用ColorY[]为别的面着色时 本来应该是黄色 结果却  会报错  所以我改了下:

我没有用ColorY[] 因为会报错  这也是一个小动画 用到了之前学的动画效果   otherwise,我的OpenGL蓝宝书到了,翻看了下,比较适合我这种fish,我准备看完这个教程就去看蓝宝书!                这一课后面说这个立体感不强  添加光照会比较有立体感  于是我这样加的:

#include<GL/glut.h>
#define WIDTH 400
#define HEIGHT 400
#include<math.h>
#define ColoredVertex(c,v) do{glColor3fv(c);glVertex3fv(v);} while(0) 
GLfloat angle = 0.0f;
void myDisplay(void)
{
static int list = 0;
if (list == 0)
{
GLfloat PointA[] = { 0.5f, -sqrt(6.0f) / 12, -sqrt(3.0f) / 6 }, PointB[] = { -0.5f, -sqrt(6.0f) / 12, -sqrt(3.0f) / 6 }, PointC[] = { 0.0f, -sqrt(6.0f) / 12, sqrt(3.0f) / 3 }, PointD[] = { 0.0f, sqrt(6.0f) / 4, 0 };
GLfloat ColorR[] = { 1, 0, 0 }, ColorG[] = { 0, 1, 0 }, ColorB[] = { 0, 0, 1 };
list = glGenLists(1);
glNewList(list, GL_COMPILE);
glBegin(GL_TRIANGLES);
ColoredVertex(ColorR, PointA);
ColoredVertex(ColorG, PointB);
ColoredVertex(ColorB, PointC);
ColoredVertex(ColorR, PointA);
ColoredVertex(ColorB, PointC);
ColoredVertex(ColorG, PointD);

//这里还有一个面的。。。
ColoredVertex(ColorG, PointB);
ColoredVertex(ColorR, PointA);
ColoredVertex(ColorB, PointD);
glEnd();
glEndList();
glEnable(GL_DEPTH_TEST);
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix(); 
glRotatef(angle, 1, 0.5, 0);
glCallList(list);
glPopMatrix();
//下面是我自己加的创造光照效果让旋转的正四面体更立体
GLfloat centerposition[] = { 0.0f, 0.0f, 0.0f, 1.0f };
GLfloat centerambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
GLfloat centerdiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat centerspecular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
glLightfv(GL_LIGHT0, GL_POSITION, centerposition);
glLightfv(GL_LIGHT0, GL_AMBIENT, centerambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, centerdiffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, centerspecular);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);

glutSwapBuffers();
}
void myIdle(void)
{
++angle;
if (angle >= 360.0f)
angle = 0.0f;
myDisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowPosition(200, 200);
glutInitWindowSize(WIDTH, HEIGHT);
glutCreateWindow("the 8th");
glutDisplayFunc(&myDisplay);
glutIdleFunc(&myIdle);
glutMainLoop();
return 0;
}

可是结果 却成了灰色的样子:这到底是有光照还是没光照  我眼瞎了看不出来啊!怎么还成了灰色?

第九课 开始讲混合了 实现半透明的效果  实例是二维图形的混合:

原来第一个绘制的是第二个参数对应的   第二次绘制的是第一个参数对应的       后来还举例绘制三维图形:

堆栈我还是不知道什么时候用  我感觉不需要用它也用了   这个程序里还加入动画部分的 双缓冲技术 以及后面的交换指针   但出来又是静态的没动画   所以我想着是不是像第一课那样绘制就行了 反正出来没动画效果  所以我试了下  结果真的可以  和上面加动画的一样   不知道作者加动画干嘛的  干脆不加好了:

这样出来也是一样。

第十课开始讲读取bmp文件(实现屏幕截图)、绘制像素、复制,之前按照书上的说法以及实例我老师找不到 出来总是exit(0)强制退出了  没结果  然后工程目录下也找不到

这个屏幕截图的 就是把显示窗口的图片保存下来  原来要先创建一个bmp文件  我创建的是一个我随手画的:

这个是画的师父,嘿嘿把他画成了这样嘿嘿,然后保存为shifu.bmp放在这个工程目录的下一级(如果不是下一级 就读不到  没结果  这和OpenCV不同 OpenCV是直接放到这个工程目录下就好  OpenGL还有放到更下一级 也许这就是它默认的放的地方) 这个生成的grap.bmp也是在这个目录下。然后绘制像素这个实例也是我随手画的xm.bmp然后窗口绘制出来:

嘿嘿这是一只外星小狗!

复制像素的这个例子显示出来的是一个白屏幕?为什么白屏呢?但是结果还是保存进目录了  通过照片查看器可以看到:

圣诞出去玩儿了。。。。。。第十一课  开始讲纹理了    这个实例是要实现这个效果:

实现这个纹理效果  很神奇啊纹理     结果报错  grap()和load_texture()这两个函数里报错:

报错说grap里三个打开文件的fopen要换成fopen_s  另外就是load_texture这个函数里glGetIntegerv()的第二个是GLuint不是GLint类型  我强制把第二个实参转换成GLint 结果也不行    教程里这一课是这里写错了???

今天又重新改了下  第二个参数那里不强制转换  而是在定义时就把它定义成GLint   结果终于没error了   可是出来却是这样:

黑白的?!形状可以看到是想要的那个效果的雏形  但怎么没颜色了   难道因为我改了定义被截断了?

第十二课 三种测试 其中一个实例是透过相框看一张图片:

透过右边的相框看左边这幅图 alpha检测   结果却是:

不对!为什么呢?我想想     不过第二个实例的倒是正确的,绘制一个类似湖面倒影的演示:

OpenGL学习之路相关推荐

  1. OpenGL学习之路17---- 镜面反射光

    代码放在github上 根据教程:ogldev一步步开始,记录学习历程 之前完成环境光和漫射光的学习.环境光的计算只由光强来决定,场景中所有位置是同一亮度:漫射光的计算由光强和光的方向一同决定,相关博 ...

  2. OpenGL学习之路13----相机控制(鼠标操作)

    代码放在github上 本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程 到目前为止,我们已经可以将一个物体以任意大小.任意角度和任意位置摆放在世界空间,相关博文链接: OpenG ...

  3. OpenGL学习之路(四)

    1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器 ...

  4. 开始我的Opengl学习之路(rua)

    这一系列的我的总结或者我的想法都是基于LearnOpengl来展开的,所以要学过那个教程之后还不懂可以来看下我的土话,我的想法可能会让你理解的轻松点. 搭TM的环境 前言: 关于之前的博客可能N久都未 ...

  5. OpenGL学习之路(二)

    1 引子 在上一篇读书笔记中,我们对书本中给出的例子进行详细的分析.首先是搭出一个框架:然后填充初始化函数,在初始化函数中向OpenGL提供顶点信息(缓冲区对象)和顶点属性信息(顶点数组对象),并启用 ...

  6. OpenGL学习之路6----平移,旋转和缩放变换

    代码放在github上 本文根据教程:ogldev进行扩充学习,一步步从零开始,记录学习历程 一.准备工作 1.1 表示一个矩阵 我们需要在程序中使用矩阵,我们需要用计算机程序语言来表示出来一个矩阵. ...

  7. Android SurfaceFlinger 学习之路(五)----VSync 工作原理

    原址 VSync信号的科普我们上一篇已经介绍过了,这篇我们要分析在SurfaceFlinger中的作用.(愈发觉得做笔记对自己记忆模块巩固有很多帮助,整理文章不一定是用来给别人看的,但一定是为加强自己 ...

  8. 我的webgl学习之路(一)

    我的webgl学习之路 (一) 做项目中偶然需要移动端3d展示,所以学习了threejs;但是有着各种限制,还有就是项目要达到好的效果肯定是需要后期处理等等,所以展开了我学习webgl之路,我刚开始毫 ...

  9. kanzi学习之路(序)

    凤凰科技讯 北京时间2016年12月19日消息,据外媒报道,中国移动操作系统公司中科创达软件股份有限公司在周一宣布,已同意以6400万欧元(约合6700万美元)收购芬兰汽车软件公司Rightware. ...

最新文章

  1. php 剩余空间,PHP内核探索:内存的申请与销毁
  2. 【渝粤教育】广东开放大学 跨文化商务沟通 形成性考核 (39)
  3. 柱状图如何叠加折线图_一样的次坐标轴不一样的柱状图
  4. 分享Android开发中用到的图标icon设计下载地址
  5. 重复代码检查工具Simian
  6. 微信小程序在线旅游信息管理+后台管理系统
  7. QSS实践汇总(3)——QComboBox样式(风格)
  8. python实现CRAPS赌博游戏。
  9. office文件 vue 预览_OFFICE 文档转换为html在线预览
  10. 关系型数据库篇(MSSQL)
  11. 聚合供应链,Saas系统
  12. Java SE核心I
  13. 主 题: atl中传HRESULT func4([out] BSTR* pVal); 怎么调用都不能将值返回呢?是不是javascript不支http://topic.okbase.net/
  14. android 仿微信demo————注册功能实现(服务端)
  15. 安卓APP开发之工程构建
  16. java基本数据类型长度
  17. 每日一道leetcode(python)844. 比较含退格的字符串
  18. TCP的三次握手各字段(ack,seq,ACK,SYN)是什么意思?
  19. 【2020.10.31 洛谷团队赛 普及组】T2 U138180 神仙数论题
  20. 【Python】Python Seaborn搞定线型回归图曲线

热门文章

  1. 哥大涉嫌数据造假,被U.S. NEWS「踢出」2022年最佳大学排名!
  2. Codeforces科学刷题指南
  3. HTML 中插入视频播放窗口
  4. OTN基本概念,大致结构
  5. SolidEdge如何为零件指定不同的颜色 给零件着色 给装配体着色
  6. 微信小程序使用Echarts真机调试报错,Echarts占内存过大解决方法
  7. 教育大数据总体解决方案(6)
  8. 微信小程序 iPhoneX 底部安全区域适配
  9. 美术 2.2 模型基础
  10. 离线数仓常用命令之datax