OpenGL
OpenGL学习
sinat_41479651
这个作者很懒,什么都没留下…
展开
-
帧缓存对象
转自https://blog.csdn.net/dreamcs/article/details/7691690 转http://blog.csdn.net/xiajun07061225/article/details/7283929 原文地址http://www.songho.ca/opengl/gl_fbo.html 但有改动。 OpenGL Frame BufferObject(FBO) Ov转载 2020-11-29 10:57:05 · 337 阅读 · 0 评论 -
OpenGL代码十一 外部纹理获取使用
推荐文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html此程序是在学习上面文章中的OpenGL入门第十一节时复现的代码,教程写的很好很细致,建议看代码之前先看教程。执行此代码前需要准备4个24位存储的bmp文件放置在工程目录下,和.cpp文件放在一起类似这样其中dummy.bmp文件直接打开电脑画图软件点文件->属性修改高度和宽度为11保存到工程目录下即可,名字就写dummy.bmp就不用修改代码了。原创 2020-11-07 18:02:08 · 596 阅读 · 0 评论 -
OpenGL代码十 抓取绘制的图形并保存为24位bmp图像
参考文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html此代码对应教程入门十使用glReadPixels读取窗口内显示的内容存储为24位bmp文件首先要建立一个1*1的24位bmp图像文件存放在程序文件夹内,与.cpp放在一起命名为dummy.bmp 和 grab.bmp,方便后续的读写操作最后抓取下来的图像写入到grab.bmp中。抓取的是当前显示的buffer内的内容。其中dummy.bmp文件直接打开电脑画图软原创 2020-11-07 17:53:52 · 530 阅读 · 0 评论 -
OpenGL代码九二维混合+三维混合
参考文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html对应教程入门九以下是我截取教程中觉得比较重要的二维混合Blend原理混合就是把两种颜色混在一起,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。主要使用glBlendFunc函数。原来已经画好的是目标颜色,后面即将画上去的是源颜色。glBlendFunc有两个参数,前者表示源因子,后者表示目标因子。这两个参数可以是多种值原创 2020-11-07 17:37:26 · 402 阅读 · 0 评论 -
OpenGL代码八显示列表
参考文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html此次代码对应上述教程入门八使用显示列表绘制一个四面体我在教程的基础上加了一个鼠标交互功能,按着鼠标拖动可以旋转四面体#include <iostream>#include<gl\glut.h>#include<time.h>#define ColoredVertex(c, v) do{ glColor3fv(c); gl原创 2020-11-07 17:30:00 · 106 阅读 · 0 评论 -
OpenGL代码七光源和材质
参考文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html入门三:https://blog.csdn.net/sinat_41479651/article/details/109548784入门六:https://blog.csdn.net/sinat_41479651/article/details/109549345以上网址是OpenGL入门教程,此次程序对应入门七,教程有给出代码,没有需要改动的,可以直接使用,我只原创 2020-11-07 17:11:52 · 232 阅读 · 0 评论 -
OpenGL代码六太阳、地球和月亮天体图画动起来
参考文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html对应上面教程OpenGL入门六,实现地球绕着太阳转,月亮绕着地球转,教程的代码直接就可以使用。一点小提示:在上面参考教程的入门五中,按照教程中设置的太阳、地球、月亮的半径是无法画出相应的球的,因为值设的太大了,根本画不下。所以可以照着下面的代码修改一下球的半径以及观察点的位置,就可以画出静止不动的三个球了。在我的实现中就不做前面静止的部分了,是直接动起来的。#原创 2020-11-07 17:02:56 · 1922 阅读 · 1 评论 -
OpenGL代码三镂空多边形
参考文章:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html本文对应OpenGL入门学习三的最后一部分,镂空多边形可以将bmp文件中的图形贴到绘制的多边形上先准备bmp文件打开画图软件,文件->属性设置宽高为32然后在上面随便画点东西,另存为保存时注意使用单色位图,存储位置在工程目录下挨着.cpp放在一个文件夹里。#include <stdio.h>#include<gl\glut原创 2020-11-07 16:40:59 · 374 阅读 · 0 评论 -
opengl纹理一二维
纹理部分纹理函数glTexImage* (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);参数1:GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D指出正在为1/2/3维对象参数2:用0表示不是某个大纹理数组的缩减参数3:该纹理图案的每一颜色用RGBA四个值原创 2020-11-07 15:53:52 · 503 阅读 · 0 评论 -
OpenGL鼠标交互旋转
实现鼠标交互并控制三维对象旋转此旋转只是单纯的放圆环面动起来,没有确切的角度计算重点:在displayFcn中刚开始一定要矩阵单位化即使用glLoadIdentity()函数,否则旋转的对象会飞,各种意义的飞;在reshape函数中有glLoadIdentity()都没用。但会有一个缺点,就是每次旋转会从初始位置开始,旋转不会叠加,这个功能后面再考虑// 画一个圆环//#include <iostream>#include<gl\glut.h>GLint winWi原创 2020-10-30 16:50:10 · 1077 阅读 · 0 评论 -
OpenGL一个窗口多个显示
实现了窗口的裁剪即一个窗口多个显示//二维 窗口裁剪#include <iostream>#include<gl\glut.h>class wcPt2D{public: GLfloat x, y;};void init(void)//初始化相关的,只设置一次的放在init里{ //alpha=0.0表示完全透明的对象;=1.0表示不透明对象 glClearColor(1.0, 1.0, 1.0, 0.0);//背景颜色设置为白色 //以下两个函数设原创 2020-10-15 20:44:51 · 2262 阅读 · 0 评论 -
OpenGL圆生成代码C++实现
画圆#include <iostream>#include<gl\glut.h>class screenPt{private: GLint x, y;public: //初始化点位置为(0,0) screenPt() { x = y = 0; } void setCoords(GLint xCoordValue, GLint yCoordValue) { x = xCoordValue; y = yCoordValue; } GLint原创 2020-10-15 15:00:07 · 856 阅读 · 0 评论 -
二维旋转,多边形沿指定点旋转指定角度
二维旋转,多边形沿指定点旋转指定角度//二维旋转,多边形沿指定点旋转指定角度#include <iostream>#include<gl\glut.h>#define PI 3.1415926#include<vector>using namespace std;class wcPt2D{public: GLfloat x, y;//多边形顶点坐标};//旋转矩阵[cos(theta),-sin(theta);sin(theta),cos(the原创 2020-10-15 14:26:04 · 875 阅读 · 0 评论 -
OpenGL椭圆生成算法
画椭圆#include <iostream>#include<gl\glut.h>#include<math.h>//inline int round(const float a) //{// return int(a + 0.5);//}//semimajor and semiminor axes(轴)void ellipseMidpoint(int xCenter, int yCenter, int Rx, int Ry)//圆的中心位置,半长原创 2020-10-13 16:37:58 · 754 阅读 · 0 评论 -
OpenGL建立显示窗口
OpenGL新建一个显示窗口只是一个显示窗口,窗口上画了一条线知道OpenGL建立窗口所必要的内容#include <iostream>#include<gl\glut.h>void init(void)//初始化相关的,只设置一次的放在init里{ //将显示窗口的背景颜色设置为白色,前三个参数分别为RGB, //第四个参数是alpha值,作为调和参数,alpha值用来为两个重叠对象确定结果颜色 //alpha=0.0表示完全透明的对象;=1.0表示不透明对象原创 2020-10-12 10:53:14 · 528 阅读 · 0 评论 -
OpenGL在窗口显示多种线型
//#include <iostream>#include<stdio.h>#include<math.h>#include<gl\glut.h>void init(void)//初始化相关的{ //将显示窗口的背景颜色设置为白色,前三个参数分别为RGB, //第四个参数是alpha值,作为调和参数,alpha值用来为两个重叠对象确定结果颜色 //alpha=0.0表示完全透明的对象;=1.0表示不透明对象 glClearColor(.原创 2020-10-12 09:39:21 · 521 阅读 · 0 评论