OpenGL

OpenGL纹理转换谜团:纹理写入FRAMEBUFFER后的镜像现象

在OpenGL中,最近将一个 GL_TEXTURE_2D 纹理写入到 GL_FRAMEBUFFER ,然后从GL_FRAMEBUFFER读取为GL_TEXTURE_2D纹理后,发现GL_TEXTURE_2D纹理变为了输入纹理的镜像纹理。效果图如下图所示。 本文将探讨这个问题的原因,并提出两种解决方案 ......
纹理 谜团 FRAMEBUFFER 镜像 现象

Linux OpenGL(3) —— 一个三角形

绘制图形的大致流程 图中,浅蓝色方格是整个过程中的重要对象。 准备顶点坐标,创建VAO,并将坐标存入VBO GLfloat vertices[] = { // 顶点位置 -0.5, -0.5, 0, 0.5, -0.5, 0, 0, 0.5, 0 }; unsigned int VAO; // 用以 ......
三角形 OpenGL Linux

相机系统 GLFW OPENGL

目录0. 前言1. 世界坐标系2. GLFW 窗口坐标系 与 坐标系变换3. 相机是什么东西4. 相机的平面位移(上下左右)5. 相机的聚焦点环绕(球形环绕 ArcBall Orbit)5.1 如何保持水平轴水平 固定向上轴5.1.1 上方观看 跳变LOG5.2 不固定向上轴 导致水平轴发生旋转 0 ......
相机 OPENGL 系统 GLFW

Linux OpenGL (2) —— 创建窗口

# 编译命令写在前面: g++ -o out main.cpp lib/glad.c -lglfw -lGL -lm -lXrandr -lXi -lX11 -lXxf86vm -lpthread -ldl -lXinerama -lXcursor 初始化 GLFW 配置需要使用的 OpenGL 版 ......
OpenGL Linux

Linux OpenGL (1)——环境搭建(GLFW, glad)

所有代码和过程都已经过测试 测试环境:Ubuntu WSL 18.04 为什么需要 GLFW 和 glad 库 我粗浅的理解:opengl 并没有提供一些跨平台代码的实现细节,因此,需要根据不同的平台下载一些库来填充 opengl 中“空虚”的函数。 如何安装 GLFW 和 glad 库 安装 GL ......
环境 OpenGL Linux GLFW glad

计算机图形学openGL

计算机图形学openGL计算机图形学:(Computer Graphics, 简称CG)简单得说:计算机图形学是一种使用数学算法将二维或者三维图形转化为计算机显示器所能显示的二维栅格形式的科学。 Modeling(建模):构造场景的三维模型。 Rendering(渲染):将三维场景绘制在屏幕上。3D ......
图形 计算机 openGL

OpenGL的模板缓冲

注意看,利用OpenGL的模板缓冲,可以轻松实现很多酷炫的效果。当然,它用起来也很简单。下面就跟着博主小编,一起来看看吧!😎 模板缓冲的使用 假设有个大小为800x600的窗口,那么模板缓冲也是一个800x600的数组,每个值为一个字节,可以保存0x00~0xFF内的值,这就是模板缓冲的全部啦。 ......
模板 OpenGL

OpenGL的深度缓冲

如果我们想要在三维空间里画两个正方形:一个红色的,一个绿色的,而且从人眼的观察角度看,绿色正方形在红色正方形的后面。最后看上去应该是这样的: 要点在于,从观察者的角度看,绿色正方形在红色正方形的后面,因此绿色正方形的一部分被红色正方形遮挡。 然而,在启用深度测试前,正方形的相对位置完全取决于绘制这两 ......
深度 OpenGL

捉虫日记:使用OpenGL加载模型 (2023/12/11)

前天晚上,花了一个小时解决了编译Assimp时的报错问题,顺便写了篇随笔。今天继续OpenGL的学习,不出意料地再次踩坑,好在最后都解决了。 今天主要学习使用Assimp加载模型,原理很简单:一个模型可以看作是许多个网格(Mesh)组成,只需要把这些Mesh画出来就好。写好代码后点击编译,出现了最让 ......
模型 日记 OpenGL 2023 12

Android OpenGl ES 3.0 学习笔记

title OpenGL ES 3.0 DrawTriangle Java->JNI:(1)Java_com_oyp_openglesdemo_render_MyNativeRenderer_nativeSetRenderType(100, 100)Java->MyGLRenderContext:G ......
Android 笔记 OpenGl 3.0 ES

Android OpenGL ES入门

1.OpenGL 和OpenGL ES OpenGL(Open Graphics Library)是一种用于渲染2D和3D图形的跨平台编程接口。OpenGL提供了一套标准的函数和接口,使开发人员能够在各种操作系统上创建高性能的图形应用程序,这些操作系统包括Windows、Linux、macOS和一些 ......
Android OpenGL

在CPF里使用OpenGL做跨平台桌面应用开发

CPF 是开源的C#跨平台UI框架,支持使用OpenGL来渲染,可以用来硬件加速播放视频或者显示3D模型 实现原理其实就是Skia用OpenGL后端,Skia里绑定GLView的OpenGL纹理,将纹理作为Skia的图像混合绘制。 在CPF里使用OpenGL,不能选择NetCore3.0和Net4, ......
应用开发 桌面 OpenGL CPF

在OpenGL中使用Dear ImGui

在众多GUI库中,Dear ImGui用起来最简单,它很容易集成到程序中,绘制的窗口看起来也还不错。可以用它画出非常炫酷的GUI界面: 而我则不同:无论使用哪个GUI库,画出来的窗口都惨不忍睹。下面简要介绍如何在OpenGL中使用Dear ImGui. 1. Dear ImGui简介 以下是Dear ......
OpenGL ImGui Dear

opengl开发:win11已阻止应用程序访问图形硬件如何处理?

开发中出现这种问题: 请到设置里面搜索:图形设置,浏览,加入exe,选择选项然后设置。不要选择让windows决定即可。 ......
应用程序 图形 硬件 程序 opengl

关于OpenGL实现VBO绘制的旗帜飘扬的作业的一个小思路

遇到一个问题,要求我用VBO画的旗帜有飘扬的动态,进一步,VBO绘制的图像怎么用曲面细分着色器。 下面是思路: 把VBO先绘制到帧缓冲里,然后保存成纹理 用纹理绘制的形式,使用曲面细分添加控制点 曲面细分评估里加入sin()函数即可 程序在有N卡的电脑上不显示不知道为什么 把VBO转换成纹理的函数 ......
旗帜 思路 OpenGL VBO

OpenGL 模型加载详解

1. Assimp 目前为止,我们已经可以绘制一个物体,并添加不同的光照效果了。但是我们的顶点数据太过简单,只能绘制简单的立方体。但是房子汽车这种不规则的形状我们的顶点数据就很难定制了。索性,这部分并不需要我们苦逼的开发人员去考虑。成熟的3D建模工具可以将设计师设计的模型导出模型文件,借助模型加载库 ......
模型 OpenGL

Visual Studio-OpenGL基础环境配置

Visual Studio2022-OpenGL环境配置(GLFW,GLAD,GLM,stb_image,ASSIMP) 项目外部依赖创建与导入方式: 说明:此图只作展示,如assimp.lib并未添加,如需要,添加即可,opengl的lib 64位链接名称位opengl32.lib 下图为Incl ......
Studio-OpenGL 环境 基础 Visual Studio

OpenGL 投光物详解

1. 投光物 继续上一节的流程,到目前为止,我们介绍的都是点光源。但是现实世界中,光源的类型却要相对复杂一些。大概会有这么几种形式:定向光、点光源、聚光等等。 2. 定向光 当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。这点很好理解,生活中我们的太阳光,就可以近似看做是平行光。定 ......
OpenGL

centos下配置OpenGL环境简单记录

yum install mesa-libGL-devel mesa-libGLU-devel freeglut-devel yum install mesa* freeglut* *GLEW* 如遇报错error:0:1(10): error: GLSL 3.30 is not supported. ......
环境 centos OpenGL

OpenGL 基础光照详解

1. 光照 显示世界中,光照环境往往是相对复杂的。因为假设太阳作为世界的唯一光源,那么太阳光照在物体A上A将阳光进行反射后,A又做为一个新的光源共同作用于另一个物体B。所以于B来讲光源是复杂的。然而这只是其中一个因素,受制于天气、温度等其他情况我们需要考虑的因素更多。在OpenGL中我们仅考虑一些简 ......
光照 基础 OpenGL

OpenGL 摄像机视角详解

1. 摄像机 摄像机就好像是我们的眼睛,我们从摄像机的方向观察世界空间中的模型。摄像机远离模型,模型自然就变小了(透视投影下),然而,在GL中事实上并没有摄像机的概念。但是我们可以通过移动世界空间远离我们的摄像机来模拟摄像机远离世界的感觉。这也正是在上一章中,我们的观察矩阵是(0,0,-3)的原因。 ......
视角 摄像机 OpenGL

OpenGL 坐标系统详解

GL中的坐标系是标准设备坐标,即他的每个坐标轴的取值范围都是[-1.0,1.0]。通常,我们输入到顶点着色器中的顶点坐标都会被转换为标准化设备坐标,然后进行光栅化,转变成屏幕坐标。然而事实上,从顶点坐标到屏幕坐标是一个较为复杂的过程。总体来讲为了某些计算更加方便,会经过5个坐标系统的变换: 局部空间 ......
坐标 OpenGL 系统

OpenGL 纹理详解

1. 纹理 在OpenGL中,纹理是一种常用的技术,用于将图像或图案映射到3D模型的表面上,以增加图形的细节和真实感 2. 纹理坐标 纹理坐标在x和y轴上,范围为0到1之间(注意我们使用的是2D纹理图像)。使用纹理坐标获取纹理颜色叫做采样(Sampling)。纹理坐标起始于(0, 0),也就是纹理图 ......
纹理 OpenGL

OpenGL 着色器详解

1. GLSL语言 glsl语言是用来编写着色器的,通过一段一段包含main函数的程序片段,告诉渲染引擎怎么去渲染内容。 glsl语言的语法有点类似c语言风格,只是增加了一些特有的关键字来修饰变量,下面是一个着色器基本的程序结构: 首先声明的是GLSL的版本号和模式,然后就是声明变量。像其他语言一样 ......
OpenGL

Mesa 23.2 带来了 Asahi 平台上的 OpenGL 3.1 和 OpenGL ES 3.0 支持,新增 RADV 功能

导读 这个版本还为 RADV 驱动器引入了新的 Vulkan 扩展以及为许多游戏进行了改进。 Mesa 23.2 开源图形堆栈是 Mesa 23 系列的第二个主要版本,为 AMD GPU 的 RADV Vulkan 驱动器、改进的 Linux 游戏以及新的 Asahi 功能带来了新功能。 Mesa ......
OpenGL 功能 Asahi 平台 Mesa

OpenGL入门——摄像机

上一节OpenGL入门——矩阵变换与坐标系统 - 一只小瓶子 - 博客园 (cnblogs.com)通过矩阵变换实现物体移动。OpenGL本身没有摄像机的概念,但是可以通过把场景中的所有物体往相反方向移动,来模拟摄像机的移动。下面介绍一下怎么通过这种方式在OpenGL中配置一个摄像机。 一、摄像机/ ......
摄像机 OpenGL

opengl viewMatrix的

多边形绕Z轴旋转矩阵:变换矩阵为: 理解上面这个对于理解viewMatrix很重要。 继续: 首先viewMatrix是变换镜头的逆矩阵,先获取变换头矩阵然后再求逆。 参考lookAt: 关键有两步: 1、镜头变换矩阵的顺序,因为此时镜头的位置和朝向已经固定了,这个时候是应该先旋转方向,然后平移,如 ......
viewMatrix opengl

关于opengl 的理解

首先来看看 2k1000 的数据手册的说明。 但是一直不理解 opengl 的逻辑。 我用 qt 也可以直接去做 图形呀,为什么要用 opengl呢。 ......
opengl

Qt OpenGL textures详解

1. 初始化opengl资源 Q_INIT_RESOURCE:textures(资源名称) QSurfaceFormat:定义3d面显示方式 如果在vs+qt vs tools 中无法正常显示3d图形,则需加入以下代码: format.setStenciBufferSize(8); format.s ......
textures OpenGL Qt

OpenGL入门——矩阵变换与坐标系统

一、OpenGL的数学库GLM 向量和矩阵的运算就不作说明了,直接介绍OpenGL中如何使用矩阵变换。 GLM(官网:OpenGL Mathematics (g-truc.net))是OpenGL Mathematics的缩写,它是一个只有头文件的库,也就是说只需包含对应的头文件就行了,不用链接和编 ......
矩阵 坐标 OpenGL 系统