OpenGL
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
-
Qt文档阅读笔记-OpenGL Window Example的解析笔记
目录OpenGLWindow Super ClassExample OpenGL Rendering Sub Class 注意:这是一个辣鸡用法他是在QWindow中使用OpenGL,在以后的练习中要使用QOpenGLWindows类 OpenGLWindow Super Class子类化QOpenGLFunctions后可以重写render()或render(QPa...原创 2018-12-20 09:43:26 · 4712 阅读 · 0 评论 -
C++ opengl 学习笔记-在OpenGL入门级代码里面glLoadIdentity的理解
在入门级代码里面,当在painter(Qt里的)或者自己写一个draw函数时。发现总是要压一个矩阵或者调用glLoadIdentity。下面本人将会结合操作系统来讲解这个为什么!主要目的是给以后的自己做的笔记,能够自己查阅。 当在调用年时候,没有压矩阵或调用glLoadIdentity,程序运行截图如下:,当有了glLoadIdentity,程序运行截图如下: ...原创 2018-08-04 16:16:50 · 6267 阅读 · 1 评论 -
C++ opengl GL_QUADS的绘制
QUADS指的是四边形, 每给出4个点,就绘制一个四边形; 给出5-7个,还是一个四边形程序运行截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); glColor4ub(...原创 2018-07-23 15:21:53 · 16348 阅读 · 0 评论 -
C++ opengl GL_LINE_STRIP的绘制
此绘制要和GL_LINE_LOOP做对比, GL_LINE_STRIP不会把最后一个点和第一个点连接起来程序运行截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glLineWidth(10.0f); glB...原创 2018-07-22 23:14:36 · 7911 阅读 · 0 评论 -
C++ opengl GL_LINE_LOOP的绘制
GL_LINE_LOOP的绘制 给出的点会绘制为一个环(所有的点首尾相接)程序截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glLineWidth(10.0f); glBegin(GL_LINE_LOOP...原创 2018-07-22 23:07:48 · 12079 阅读 · 0 评论 -
C++ opengl 线段的绘制
每两个点一条线,已经连接的点不能连线! 程序运行截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glLineWidth(10.0f); glBegin(GL_LINES); glColor4ub(255...原创 2018-07-22 22:58:33 · 5922 阅读 · 0 评论 -
C++ opengl 点的绘制
(方形点,像素点,默认大小1.0)程序截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //擦除背景使用的颜色(分别表示颜色分量的值) glClear(GL_COLOR_BUFFER_BIT); //擦除当前背景颜色 glBegin(GL_POINTS)...原创 2018-07-22 22:46:43 · 4757 阅读 · 0 评论 -
C++ opengl 绘制三角形扇
程序运行截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //擦除背景使用的颜色(分别表示颜色分量的值) glClear(GL_COLOR_BUFFER_BIT); //擦除当前背景颜色 glBegin(GL_TRIANGLE_FAN); glCol...原创 2018-07-22 22:39:31 · 5568 阅读 · 0 评论 -
Qt|C++-OpenGL绘制三角形带
程序运行截图如下: MyFristMSVCQt.h#pragma once#include <QtWidgets/QWidget>#include "ui_MyFristMSVCQt.h"class MyFristMSVCQt : public QWidget{ Q_OBJECTpublic: MyFristMSVCQt(QWidget *...原创 2018-07-22 22:27:14 · 4541 阅读 · 1 评论 -
Qt OpenGL 图像的平移(使用glTranslatef)
注意:如果使用glVertex3f把顶点的坐标进行平移的话是一种非主流的方法;一般使用glTranslatef进行操作,通过改变当前矩阵的坐标系来实现平移! 程序运行截图如下: 上下平移: 左右平移: 前后平移: 源码如下:myglwidget.h#ifndef MYGLWIDGET_H#define MYGLWIDGET_...原创 2018-08-05 01:39:04 · 8739 阅读 · 2 评论 -
3D中的OBJ文件格式详解
原文地址:https://blog.csdn.net/shenshen211/article/details/51740988 常见到的*.obj文件有两种:第一种是基于COFF(Common Object File Format)格式的OBJ文件(也称目标文件),这种格式用于编译应用程序;第二种是Alias|Wavefront公司推出的OBJ模型文件。本文对第二种obj模型文件进行分析。...转载 2018-08-05 14:00:13 · 4459 阅读 · 2 评论 -
C++ opengl 点光源
关键源码如下:light.h#pragma once#include "ggl.h"class Light {protected: GLenum mLightIdentifier; Light();public: void SetAmbientColor(float r, float g, float b, float a); //设置环境光 void SetDiffus...原创 2018-08-16 09:05:05 · 4877 阅读 · 1 评论 -
C++ opengl 绘制地面
程序运行如下: 注意:主要是法线 源码如下:ground.h#pragma once#include "ggl.h"class Ground {public: void Draw();};ground.cpp#include "ground.h"void Ground::Draw() { glEnable(GL_DEPTH_TEST);...原创 2018-08-12 23:18:26 · 8733 阅读 · 3 评论 -
C++ opengl 方向光
未有方向光的截图如下: 给模型加方向光后,截图如下: 关键源码如下:light.h#pragma once#include "ggl.h"class Light {protected: GLenum mLightIdentifier; Light();public: void SetAmbientColor(float r, float g, floa...原创 2018-08-15 11:00:22 · 4314 阅读 · 0 评论 -
C++ opengl 对OpenGL中矩阵设置的初步认识
对OpenGL中矩阵设置的初步认识:在入门级的代码里面,通常在初始化OpenGL中可以看到这样的代码:void init(){ glMatrixMode(GL_PROJECTION); gluPerspective(50.0f,800.0f/600.0f,0.1f,1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}...原创 2018-08-03 10:39:00 · 5236 阅读 · 0 评论 -
通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用 (
原文地址如下:http://blog.sina.com.cn/s/blog_70c3d9ed010122bp.html#cmt_56C57036-7F000001-15BB06C27-948-8A0对于glLoadIdentity(),glPushMatrix(),glPopMatrix()的作用虽然网上有很多的帖子,而且都试图解释得很详细,但是效果总是越说越黑,模棱两可的。今天我就简单滴...转载 2018-08-02 23:14:29 · 4848 阅读 · 0 评论 -
C++ opengl 使视野转头移动(站桩看世界)
程序运行截图如下:抬头低头上看:向四周看: 关键是放置摄像机,摄像机相关博文如下:https://blog.csdn.net/qq78442761/article/details/81176920为什么要加单位矩阵原因如下:https://blog.csdn.net/qq78442761/article/details/81411959 重要伪代码如下:...原创 2018-08-07 15:53:54 · 4514 阅读 · 0 评论 -
Qt|OpenGL对obj文件的认识以及如何去解析(opengl+qt构造地球模型)
首先来个简单点的.obj文件(如下图所示): 总体处理伪代码如下:void GraphicsModel::init(const QString filePath){ QFile file(filePath); if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){ qDebug()<<...原创 2018-08-10 17:11:09 · 5822 阅读 · 3 评论 -
C++ opengl 深度缓冲区
GL_DEPTH_BUFFER_BIT 每一次清除之前,都要清空深度缓冲区启动深度测试glEnable(GL_DEPTH_TEST):离视野近的物体会挡住离视野远的物体。 运行截图如下:源码如下:void Init() { glMatrixMode(GL_PROJECTION); gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, ...原创 2018-07-27 23:23:07 · 4419 阅读 · 1 评论 -
C++ opengl 绘制三角形带
程序运行截图如下: 程序源码如下: ggl.h#pragma once#include <windows.h>#include <gl/GL.h>#include <gl/GLU.h>#include <gl/glext.h>#include <stdio.h>#include <math.h>#...原创 2018-07-22 21:51:51 · 5329 阅读 · 1 评论 -
Qt|C++-最简单的OpenGL(变颜色的三角形)
程序运行截图如下: 代码如下: MyFrisstMSVCQt.h#pragma once#include <QtWidgets/QWidget>#include "ui_MyFristMSVCQt.h"class MyFristMSVCQt : public QWidget{ Q_OBJECTpublic: MyFristMSVCQt(Q...原创 2018-07-22 20:34:49 · 5029 阅读 · 2 评论 -
vs2015-OpenGL绘制三角形
程序运行截图如下: 代码如下:ggl.h#pragma once#include <windows.h>#include <gl/GL.h>#include <gl/GLU.h>#include <gl/glext.h>#include <stdio.h>#include <math.h>#...原创 2018-07-22 15:44:35 · 5579 阅读 · 0 评论 -
C++ opengl 环境光分量
环境光分量当一个环境光为r,g,b,a物体的反射系数为mr,mg,mb,ma时,那么看到的光就为:r*mr,g*mg,b*mb,a*ma环境光:从四面八方射进来的光如下面,设置环境光:glLightfv(GL_LIGHT0,GL_AMBIENT,whiteColor);设置反射系数:glMaterialfy(GL_FRONT,GL_AMBIENT,ambientMat);...原创 2018-07-24 21:03:32 · 4203 阅读 · 2 评论 -
C++ opengl 方向光
方向光1.启用一盏灯:glEnable(GL_LIGHTO);最多8盏灯 GL_LIGHT0~GL_LIGHT72.设置灯的位置:glLightfv(GL_LIGHT0,GL_POSITION,lightPos);其中lightPos如float loghtPos[]={0.0f,1.0f,0.0f,0.0f};这个是一个其次坐标:(x,y,z,w) w为0表示光源为无穷远(如太阳):...原创 2018-07-24 20:55:20 · 4361 阅读 · 1 评论 -
C++ opengl 启动光照
开启光照:物体的着色算法不单单依赖于顶点的颜色,引用内置的光照算法glEnable(GL_LIGHTING):这个仅仅是开启颜色计算的算法,变黑的原因:1.无光源;2.无法线。 原始伪代码如下:void Init() { //设置当前矩阵 glMatrixMode(GL_PROJECTION); //设置为投影矩阵(对矩阵造成影响的代码,都会影响当前矩阵) //...原创 2018-07-24 00:14:11 · 5010 阅读 · 0 评论 -
C++ opengl 放置摄像机
放置摄像机在场景绘制之前摆放摄像机【把摄像机摆好了,才能看到东西】gluLookAt前3个参数为:摄像机的位置;中间3个参数:眼睛看到的视点;后3个参数:从头顶发出去的方向向量;犹如人看东西一样 如下伪代码:void Draw() { glClearColor(30.0f / 255.0f, 30.0f / 255.0f, 30.0f / 255.0f, 1.0f...原创 2018-07-23 23:44:34 · 4287 阅读 · 0 评论 -
C++ opengl 复合运动
绘制场景之前要确保当前模型视图矩阵是单位矩阵先旋转后移动 与 先移动后旋转 有不同的结果,矩阵没有交换律 程序运行截图如下: 源码如下(先移动再旋转):void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glPush...原创 2018-07-23 23:32:49 · 4196 阅读 · 1 评论 -
C++ opengl 矩阵的压栈与出栈
矩阵的压栈与出栈让两个重合的三角形,分开程序运行截图如下: 伪代码如下:void Init() { //设置当前矩阵 glMatrixMode(GL_PROJECTION); //设置为投影矩阵(对矩阵造成影响的代码,都会影响当前矩阵) //第一个参数是垂直方面的视角,第二个是宽和高的比,第三个是最近可以看到的距离,第四个是最远距离 gluPerspectiv...原创 2018-07-23 22:23:42 · 4497 阅读 · 1 评论 -
C++ opengl GL_POLYGON的绘制
将所有点,做成一个凸多边形,在一般项目中,一般只要用三角形就够了。因为三角形,三个角共面程序运行截图如下:伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glColor4ub(255, 0, 0,...原创 2018-07-23 21:55:02 · 12250 阅读 · 1 评论 -
C++ opengl GL_QUAD_STRIP的绘制
4个点绘制一个四边形,6个点绘制2个四边形,8个点绘制3个四边形;程序运行截图如下: 伪代码如下:void Draw() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUAD_STRIP); glColor4ub(255, 0, 0, 255); g...原创 2018-07-23 19:31:18 · 7280 阅读 · 0 评论 -
C++ opengl 漫反射和镜面反射参数
漫反射和镜面反射参数开启光照后,物体表面的颜色:由 环境光+漫反射+镜面反射 组成漫反射:glLightfv(GL_LIGHT0,GL_DIFFUSE,whiteColor);glMaterialfv(GL_FRONT,GL_DIFFUSE,diffuseMat);镜面反射:glLightfv(GL_LIGHT0,GL_SPECULAR,whiteColor);glMateri...原创 2018-07-24 21:14:00 · 5709 阅读 · 1 评论 -
C++ opengl 天空盒的创建
天空盒要处在最远处,任何东西都可以遮挡天空盒,而天空盒不能去遮挡任何东西。根据深度缓冲区(清空深度缓存区默认是1.0【白色】),如果是在视野范围内,那么他的深度缓冲区会写上最近一次物体的深度信息,深度缓冲区就会发生变化(深度缓冲区会被刷新)。如果又有物体,他的深度缓冲区的值比刚刚的小,就绘制出来,并且刷新深度缓冲区,如果值比深度缓冲区大,那么是绘制不出来的。如何创建天空盒子,让OpenGL...原创 2018-07-28 14:55:04 · 5753 阅读 · 1 评论 -
C++ opengl 纹理过滤之GL_NEAREST
源码还是这个博文里的https://blog.csdn.net/qq78442761/article/details/81228557 GL_LINEAR过滤:表示给多边形进行着色的时候,它的颜色需要通过他周围的一些点进行某一种线性的差值之后计算出来的颜色;GL_NEAREST过滤:表示给多边形进行着色的时候,取离他当前最近的那个纹理坐标的颜色【纹理图片是离散的(如128*128...原创 2018-07-26 23:31:39 · 5050 阅读 · 0 评论 -
C++ opengl 纹理过滤之GL_REPEAT
源码还是这个博文里面的https://blog.csdn.net/qq78442761/article/details/81228557程序运行截图如下:repeat犹如字面意思那样会重复,当几何纹理坐标大于1.0的时候,他取的纹理坐标的值位于纹理坐标减去1.0的位置,如纹理坐标是1.1的时候,他取的颜色的值是0.1。所以1.0和2.0一样,1.1和0.1一样,所以就会重复,就向字...原创 2018-07-26 23:18:26 · 6161 阅读 · 0 评论 -
C++ opengl 纹理过滤之GL_CLAMP
源码还是这样,把背景改下:https://blog.csdn.net/qq78442761/article/details/81228557采用GL_CLAMP方式过滤时大于1.0的所有的纹理坐标,会取纹理坐标为1.0上的纹理颜色源码如下:void Draw() { glClearColor(0.1f, 0.4f, 0.6f, 1.0f); glClear(GL_COLOR_...原创 2018-07-26 23:06:01 · 5706 阅读 · 0 评论 -
C++ opengl 纹理生成
程序运行截图如下: 看着很炫酷:其实是图片炫酷 程序源码如下:void Init() { glMatrixMode(GL_PROJECTION); gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); int nFi...原创 2018-07-26 22:04:19 · 6602 阅读 · 1 评论 -
Qt|OpenGL学习笔记-绕X轴、Y轴、以及XY轴旋转的四边体
程序运行截图如下: 源码如下:myglwidget.h#ifndef MYGLWIDGET_H#define MYGLWIDGET_H#include <QWidget>#include <QOpenGLWidget>class QTimer;class MyGLWidget : public QOpenGLWidget{ Q...原创 2018-07-26 17:14:17 · 6531 阅读 · 1 评论 -
Qt学习笔记-Qt中OpenGL的使用
现在窗口中心即为坐标原点,X轴从左到右,Y轴从下到上,Z轴从里到外。 程序运行截图如下: 源码如下:myglwidget.h#ifndef MYGLWIDGET_H#define MYGLWIDGET_H#include <QWidget>#include <QGLWidget>class MyGLWidget : public Q...原创 2018-07-26 15:52:26 · 19819 阅读 · 3 评论 -
error: undefined reference to `_imp__glXXX@XX'
问题: 原文地址:https://blog.csdn.net/hebbely/article/details/69946155 如:error: undefined reference to `_imp__glClearColor@16' 解决办法: 这是相关库文件没有链接,在 .pro 文件中加入 openGL...转载 2018-07-26 15:33:39 · 8606 阅读 · 2 评论 -
Qt|OpenGL-天空盒子的创建
程序运行截图如下:源码如下:myglwidget.h#ifndef MYGLWIDGET_H#define MYGLWIDGET_H#include <QOpenGLWidget>#include <QWidget>class SkyBox;class MyGLWidget : public QOpenGLWidget{ Q_O...原创 2018-07-29 14:55:01 · 5147 阅读 · 2 评论