OpenGL
文章平均质量分 82
OpenGL
-Xavier-
这个作者很懒,什么都没留下…
展开
-
OpenGL 保存渲染的结果为图片
对于案例,因为正好快要过生日的原因,打算从Shadertoy上参考渲染蛋糕的Shader移植到本地OpenGL,移植方法可以参考。常被用来导入OpenGL纹理图片,对于保存像素格式数据到BMP、JPEG、JPG等图片格式数据我们可以使用对应的。最后一个参数传入我们写入像素数据的区块首地址,必须预先用malloc分配合适的大小。,由于函数的实现都已经放在头文件中,只需要在包含头文件前确保宏。第五个参数指定了像素数据的格式,可以传入的值有。第六个指针指定了数据的类型,必须为以下值之一。原创 2023-07-27 04:17:10 · 676 阅读 · 0 评论 -
OpenGL绘制律动爱心
仔细观察这两个shader,发现iq大神只用了两个shadertoy内置的uniform输入变量,分别为iTime和iResolution,他们分别代表程序运行的时间和程序的像素大小,我们只需要在自己的shader中加入这两个变量并且在源文件中传递这两个变量的值给着色器就可以,当然fragCoord作为mainImage的输入只需要在顶点着色器中传递给片段着色器。把这款编译好的3D心型shader打包发送给你的女朋友,让她感受一下数学的浪漫吧~基本的使用VSCode编写C/C++代码的经验。原创 2023-07-20 13:44:35 · 440 阅读 · 2 评论 -
OpenGL等矩形贴图到立方体环境贴图变换技巧记录
这个网站详细介绍了整个加载过程包括代码,这里只对需要额外理解的细节做补充。等矩形贴图是将球体的贴图展开成正方形,一个例子如下所示:要变成的环境映射贴图的GLSL代码如下:#version 330 coreout vec4 FragColor;in vec3 localPos;uniform sampler2D equirectangularMap;const vec2 invAtan = vec2(0.1591, 0.3183);vec2 SampleSphericalMap(vec3原创 2021-04-10 16:51:29 · 572 阅读 · 0 评论 -
OpenGL画圆环
代码主要由Torus.hpp、Torus.cpp、Utils.hpp构成,通过加载纹理图片和着色器文件Torus_Texture_frag.glsl、Torus_Texture_vert.glsl实现画出一个甜甜圈的效果。主要用到的图形库有glew、glfw3、soil2、glm实现如下:Utils.hpp包含了加载纹理和glsl着色器文件的功能性程序#include <GL/glew.h>#include <GLFW/glfw3.h>#include "S原创 2020-12-18 12:09:12 · 1418 阅读 · 0 评论 -
C++从文件中读取glsl文件中读取着色器字符串代码时遇到的乱码问题
最近在读<<Computer Graphics Programming in OpenGL Using C++>>时,作者给出了一段从glsl文件读源码的程序,再动手做实验后发现了一点小关乎C++底层的stl::string底层实现机制在string到C字符串的小问题。源代码是这样写的,它包含在一整个cpp文件中:而我为了提高后续实验这段代码的复用性,则是将其写入了一个hpp文件,这时候就发生了转换错误:定义在ReadingGLSLfile.hpp中的pair类型中的原创 2020-11-14 11:03:53 · 1327 阅读 · 0 评论 -
VSCode配置OpenGL(MinGW+LLVM+freeglut)
OpenGL是跨平台的图形库,这意味着不管是Windows、Macintosh还是Linux下,由它编写的代码都能正确执行,OpenGL提供绘制图形的API,是进阶学习虚幻引擎的重要组成部分。VSCode配置OpenGL走过不少弯路,写成博客的方式记录一下配置步骤以免重新配置的时候又得到处找博客教程。以前我用的编译器是gcc,而现在改用clang,编译起来感觉clang更快,出错提示也更友好,如果你不想改用clang编译,那么就需要另找教程配置了。LLVM下载:https://releases.原创 2020-10-14 10:26:57 · 2840 阅读 · 4 评论