- 博客(40)
- 收藏
- 关注
原创 我的OpenGL学习之路(未完)
配置OpenGL1.codeblock配置OpenGL2.vs2017配置OpenGL入门1.OpenGL入门-绘制点线面2.OpenGL-入门-绘制圆3.OpenGL-入门-关于多边形4.OpenGL-入门-颜色
2019-03-26 17:05:00 379
原创 OpenGL-入门-BMP像素图glReadPixels(1)实现读取屏幕中间的颜色和获取屏幕上鼠标点击位置的颜色
在实际应用中,如果需要频繁地读取像素数据,最好考虑使用一些其他的技术来减少性能开销。它可以用来获取屏幕上特定位置的像素颜色值或者获取一块区域内的像素数据。format:像素数据的格式,可以是 GL_RGBA、GL_RGB、GL_DEPTH_COMPONENT 等等。type:数据的数据类型,如 GL_UNSIGNED_BYTE、GL_FLOAT 等。如果你想读取一个区域的像素数据,可以调整 width 和 height 参数的值。x 和 y:读取区域左下角的像素坐标。data:存储像素数据的缓冲区。
2023-08-27 23:24:10 3369
原创 LearnOpenGL-Hello Triangle-详解
#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>/************************************************************* 先定义顶点,定义完之后发送给图形渲染管线的第一个处理阶段:顶点着色器。第一步顶点输入GP...
2020-04-14 23:26:18 210
原创 LearnOpenGL-创建窗口-伪码对照
学习于glfw、learnOpenGL、GLAPI相关函数:glfwInit();、void glfwWindowHint ( int hint, int value );GLFWwindow* glfwCreateWindow (int width , int height , const char * title,GLFWmonitor * monitor,GLFWwindow * ...
2020-01-13 23:22:10 138
翻译 OpenGL的glfw创建窗口提示各个函数的设置
学习Window creation hints涉及的相关函数有:glfwInit();每次用glfwInit初始化库时,提示都被设置为默认值。glfwWindowHint();设置整数值提示glfwWindowHintString();设置字符串值提示glfwDefaultWindowHints();将会所有提示重置设置为默认值glfwCreateWindow();创建窗口;以下提示...
2020-01-13 16:26:26 1414
原创 C++数据结构-队列
C++中vector使用详细说明isEmpty()力扣-队列创建一个类MyQueue↓包含私有成员:一个vector容器:data;和 初始位置点。↓包含公有成员:添加元素,删除元素,判断是否空#include "pch.h"#include <iostream>#include <vector>using namespace std;class M...
2019-06-10 18:33:13 139
原创 OpenGL-入门-BMP像素图glDrawPixels
3、glDrawPixels 的用法和举例glDrawPixels:绘制一些像素。当前可以简单理解为“把内存中一些数据作为像素数据,进行绘制”。 glDrawPixels 函数与 glReadPixels 函数相比,参数内容大致相同。它的第一、二、三、四个参数分别对应于 glReadPixels 函数的第三、四、五、六个参数,依次表示图象宽度、图象高度、像素数据内容、像素数据在内存中的格式。...
2019-06-09 14:39:17 4783
原创 帧数
帧速就是一秒钟内播放的画面数目(FPS:frames per second)。我们可以先测量绘制两幅画面之间时间 t,然后求它的倒数即可。假 如 t=0.05s,则 FPS 的值就是 1/0.05=20。通常 C 语言的 time 函数精确度一般只到一秒,不能满足。clock 函数也就到十毫秒左右,还是有点不够。因为 FPS 为 60 和 FPS 为 100 的时候,t 的值都是十几毫秒。你...
2019-05-04 21:08:48 581
原创 OpenGL-入门-三维混合
二、实现三维混合 进行三维场景的混合时必须注意的,那就是深度缓冲。 深度缓冲是这样一段数据,它记录每一个像素距离观察者有多近。在启用深度缓冲测试的情况下,如果将要绘制的像素比原来的像素更近,则像素将被绘制。否则,像素就会被忽略掉,不进行绘制。这在绘制不透明的物体时非常有用—— 不管是先绘制近的物体再绘制远的物体,还是先绘制远的物体再绘制近的物体,或者干脆以混乱的顺序进行绘制,最后的显示结果...
2019-05-04 20:50:13 327
原创 OpenGL-入门-二维混合
glEnable(GL_BLEND);//开启 OpenGL 的混合glDisable(GL_BLEND);//关闭 OpenGL 的混合glBlendFunc (源因子,标因子);混合是什么呢?混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种 方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体...
2019-05-03 15:02:24 345
原创 OpenGL-入门-旋转的彩色正四面体(未完)
#include "pch.h"#include <iostream>#include <gl/glut.h>#include <math.h>#define ColoredVertex(c,v) do{glColor3fv(c);glVertex3fv(v);}while(0)#define WIDTH 400#define HEIGHT 400...
2019-05-02 20:42:42 1157
原创 OpenGL-入门-显示列表
相关函数分配显示列表编号glGenLists();创建显示列表glNewList(装入的显示列表,GL_COMPILE );GL_COMPILE_AND_EXECUTglEndList();调用显示列表glCallList();glCallLists(); 销毁显示列表glDeletelists();在编写程序时,遇到重复的工作,我们往往是将重复的工作编写为函数,在...
2019-05-02 20:41:19 526
原创 OpenGL-入门-光照
OpenGL 在处理光照时采用这样一种近似:把光照系统分为三部分,分别是光源、材质和光照环境。光源就是光的来源, 可以是前面所说的太阳或者电灯等。材质是指接受光照的各种物体的表面,由于物体如何反射光线只由物体表面决定 (OpenGL 中没有考虑光的折射)。材质特点就决定了物体反射光线的特点。光照环境是指一些额外的参数,它们将影响最终的光照画面,比如一些光线经过多次反射后,已经无法分清它究竟是由...
2019-05-02 12:50:00 747
原创 c语言-顺序栈-数据结构
#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */t...
2019-04-03 23:00:53 171
原创 力扣-两数之和-C语言
暴力法int* twoSum(int* nums, int numsSize, int target) { static int a[2]={0}; for(int i = 0; i < numsSize-1; i++) { for(int j=i+1; j < numsSize; j++) { i...
2019-04-03 15:41:03 1161
原创 OpenGL-入门-齐次坐标(未完)
学习于《OpenGL编程指南》、强推:caster99博主的详解OpenGL采用的是相机模型,就是把视图变换操作类比为使用照相机拍摄照片的过程,具体步骤如下:1.将准备拍摄的对象移动到场景中的指定位置。(模型变换,Model Transform)2.将相机移动到准备拍摄的位置,将它对准某个方向。(视图变换,View Transform)3.设置相机的焦距,或调整缩放比例。(投影变换,Pro...
2019-03-30 13:25:58 719
原创 OpenGL-入门-初识OpenGL(未完)
学习于《OpenGL编程指南》什么是OpenGLOpenGL是图形硬件的一种软件接口。这个接口包含的函数超过700个(纳入OpenGL 3.0的函数大约有670个,另外50个函数位于OpenGL工具库中),这些函数可以用于指定物体和操作,创建交互式三维应用程序。 OpenGL色设计目的就是作为一种流线型的、独立于硬件的接口,在许多不同的硬件平台上实现。为了实现这个目标,OpenGL并未包含...
2019-03-29 23:39:14 237
原创 OpenGL-入门-初级日地月
#include "pch.h"#include <GL/glut.h> #include <iostream>#include <stdio.h> #include <time.h> const GLdouble Pi = 3.1415926536;/* 太阳半径69600km 地球半径6378km 月球半径1739km 地球...
2019-03-26 21:07:12 1241
原创 C++类&对象(待完善)
C++在C语言的基础上增加了面向对象编程。类是C++的核心特征,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。C++类定义定义一个类本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说它定义了类的对象包括了什么,以及可以在这个对象上执行那些操作。...
2019-03-24 19:46:06 135
原创 C++小项目-双人对战五子棋
五子棋双人对战学习于大咖讲学堂、graphics1.1图形库画棋盘(画线)、画棋子、获取鼠标位置1.2创建窗口背景加载图片IMAGE mm;loadimage(&mm,“3.jpg”,600,500);解决方式:1.修改属性字符集2.loadimage(&mm,L"3.jpg",600,500);3.loadimage(&mm,_T(“3.jpg”),...
2019-03-21 11:04:18 1006
原创 C++日期&时间
C++日期&amp;amp;amp;amp;amp;amp;时间学习于菜鸟教程C++标准库汇总没有提供所谓的日期类型。C++继承了C语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数结构,需要在C++程序中引用头文件。有四个与时间相关的类型:clock_t、time_t、size_t和tm。类型clock_t、size_t和time_t能够把系统时间和日期表示为某种整数...
2019-03-15 18:41:16 2166
原创 CRT中的安全功能
CRT学习于微软新版本CRT函数具有_s(“安全”)的后缀。例如, strcpy 函数无法验证调用字符串复制它是否超过它目标缓冲区。 但其安全副本, strcpy_s,采用缓冲区的大小作为参数,因此,它可以确定缓冲区是否溢出。带有安全功能同样不能阻止发生安全错误, 如果使用 strcpy_s 复制为一个字符为十六进制字符缓冲区,这是在部分的错误; strcpy_s 不能更正此错误,但带有安...
2019-03-12 13:27:59 545
原创 C++引用
C++引用学习于菜鸟教程 引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同: 不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须...
2019-03-08 18:49:03 346
原创 C++随机数-随机红包
随机数学习于菜鸟教程、c primer plus 在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数(计算机已经固定下来的数,不管怎么生成都是固定的数)。生成随机数之前必须先调用 srand() 函数。 srand函数是随机数发生器的初始化函数。 原型: void srand(unsigned seed); 用法:它需...
2019-03-07 12:09:52 1146 1
原创 C++Lambda 函数与表达式
学习于:菜鸟教程C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。Lambda 表达式本质上与函数声明非常类似。Lambda 表达式具体形式如下:[capture](parameters)-&gt;return...
2019-03-06 23:21:45 788
原创 C++存储类(待完成)
static 存储类 指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁。因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。 static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。 在 C++ 中,当 static 用在类数据成员上时,会导致仅有一个该成员的...
2019-03-05 13:10:16 133
原创 OpenGL-入门-颜色
RGBA 模式中,每一个像素会保存以下数据:R 值(红色分量)、G 值(绿色分量)、B 值(蓝色分量)和 A 值(alpha 分 量)。其中红、绿、蓝三种颜色相组合,就可以得到我们所需要的各种颜色,而 alpha 不直接影响颜色,它将留待以后介绍。在 RGBA 模式下选择颜色是十分简单的事情,只需要一个函数就可以搞定。 glColor*系列函数可以用于设置颜色,其中三个参数的版本可以指定 R...
2019-03-03 00:03:25 447
原创 OpenGL-入门-关于多边形
在二维的面,从三维的角度来看,是具有两个面的。一般约定为“顶点以逆时针顺序出现在屏幕上的面”为“正面”,另一个面即成为“反面”。每一个面都可以设置不同的绘制方式:填充、只绘制边缘轮廓线、只绘制顶点, 其中“填充”是默认的方式。可以为两个面分别设置不同的方式。glPolygonMode(GL_FRONT, GL_FILL); // 设置正面为填充方式glPolygonMo...
2019-02-28 23:45:32 837
原创 OpenGL-入门-正n边形绘圆
正四边形,正五边形,正六边形,……,直到正 n 边形,当 n 越大时,这个图形就越接近圆,当 n 大到一定程度后,人眼将无法把它跟真正的圆相区别 #include <GL/glut.h> #include <math.h>const int n = 20;const GLfloat R = 0.5f;const GLfloat Pi = 3.141592653...
2019-02-27 11:04:24 596
原创 OpenGL-入门-绘制点线面
计算机里的一个点就是一个像素;“点动成线”,“线动成面”,“面动成体”,其实就是像素的移动组成绘制:一个黑色的窗口中间白色的矩形#include <GL/glut.h> //需要包含头文件#include <GL/glut.h>,这是 GLUT 的头文件。/*本来 OpenGL 程序一般还要包含<GL/gl.h>和<GL/glu.h&...
2019-02-25 23:26:20 1340
转载 codeblock配置OpenGL
文章转载:感谢若之辰https://blog.csdn.net/sunny_xsc1994/article/details/44301841 1.2 一个补充若是经过前面的配置仍然不行,也可以这么试试看。 在已存在的项目基础上右击 Project->Build Option ,在Linker Settings中add如下几个:glut32opengl32glu32winmm...
2019-02-25 00:12:46 887 2
原创 C语言-普里姆算法-数据结构
整理自《大话数据结构》P247普里姆算法的核心是以点扩散点更好适用于:边数非常多的情况#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TR...
2019-02-21 14:08:33 1037
原创 C语言-百钱买百鸡-穷举法
百钱买百鸡问题有一百块打算买一百只鸡,大鸡3元一只,小鸡1元三只,不大不小2元一只。#include <stdio.h>#include <stdlib.h>int main(){ int x,y,z; //x大鸡数量,y不大不小的数量,z小鸡的数量 for(x = 0; x < 100; x++) f...
2019-02-21 13:37:54 6704 4
原创 C语言-斐波那契数列-递归\迭代
斐波那契数列(Fibonacci sequence)、黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现...
2019-02-17 21:50:20 891
原创 C语言-全排列-递归
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。公式:全排列数目f(n)=n! (定义0!=1)示例: 1的全排列为:(1) 2,3的全排列为:(2,3)(3,2) 1,2,3的全排列为: (1,2,3)(1,3,2)相当于2,3全排列加1 (2,1,3)(2,3,1)相当于1,3全...
2019-01-31 11:49:54 5163
原创 C语言-汉诺塔问题-递归
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。柱上所有的盘子分成两部分,把上面的n-1个盘子看成一个整体,这样就简化成了两个盘子(上面的n-1个,和...
2019-01-31 11:01:06 533
原创 N个构成的简单多边形面积
计算由N个点构成的简单多边形面积。不考虑可能存在的边相交以及岛洞等复杂情况。计算公式:S(N1,N2,N3…Nn)=0.5abs[(x1y2-y1x2)+(x2y3-y2x3)…+(xny1-yn*x1)](为什么是这公式我也不知道)#include <stdio.h>#include <stdlib.h>int main(){ int n,i,k; in...
2019-01-25 18:04:32 708
原创 C语言-typedef和define的用法详解
typedef:类型定义c语言提供了typedef用来建立新的数据类型,例如typedef int Length; //将Length定义为与int具有相等意义的名字。类型Length可以用于类型声明、类型转换等,它和类型int完全相同,例如:Length len,maxlen;Length *lengthes[];类似地,声明typedef char *string; //...
2019-01-13 16:37:53 338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人