OpenGL学习日记-2014.11.6--OpenGL缓冲区对象

OpenGL学习笔记-2015.3.24——transform feedback缓存&粒子系统示例分析 transform feedback是OpenGL中比较酷炫的特性之一,他让客户端应用程序可以获取到渲染流水线上的顶点数据。基于这一特性实现了基于z-pass场景决策渲染技术,当然在此并没有去了解何为z-pass场景决策渲染技术,总之是一个可以有效减少渲染数据的输送。这里只是通过一个简单的例子系统,去了解transform feedback对象的使用方法。 阅读详情
1.何为OpenGL缓冲区对象,他有什么作用
    其实在字面意义上来看,就应该知道缓冲区对象的大体做那个,多半是用来解决数据传输问题。在OpenGL,由于OpenGL是按照客户机-服务器模式设计的,在OpenGL中任何时候需要数据,都必须从客户机内存存到服务器,如果数据并没有修改,或者客户机和服务器位于不同的计算机(分布式渲染--不懂。。),就会产生不必要的传输,或者传输比较缓慢。缓冲区对象设计使得用户可以指定数据存在服务端的内存中。
2.如何使用OpenGL缓冲区(可以保存那些数据,如何管理,使用这些数据)
    缓冲区对象的使用:
        1)创建缓冲区对象,产生唯一标识符:void glGenBuffers(GLsizei n, GLuint *buffers)
        2)绑定缓冲区到指定类型:void glBindBuffer(GLenum target, GLuint buffer)
        3)用数据分配和初始化缓冲区对象 void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,                          GLenum usage);
        4)使用缓冲区数据:以顶点数据为例子,代码来自《OpenGL编程指南》
#define VERTICES 0
#define INDICES 1
#define NUM_BUFFERS 2
#define BUFFER_OFFSET(bytes) ( (GLubyte*)NULL + (bytes) )
 static GLuint buffers[NUM_BUFFERS];
 static GLfloat vertices[][3] = {
  { -1.0, -1.0, -1.0 },
  { 1.0, -1.0, -1.0 },
  { 1.0, 1.0, -1.0 },
  { -1.0, 1.0, -1.0 },
  { -1.0, -1.0, 1.0 },
  { 1.0, -1.0, 1.0 },
  { 1.0, 1.0, 1.0 },
  { -1.0, 1.0, 1.0 },
 };//正方体
 //顶点索引
 static GLubyte indices[][4] = {
  { 0, 1, 2, 3 },
  { 4, 7, 6, 5 },
  { 0, 4, 5, 1 },
  { 3, 2, 6, 7 },
  { 0, 3, 7, 4 },
  { 1, 5, 6, 2 },
 };//六个面
 glGenBuffers(NUM_BUFFERS, buffers); //生成数组标记,唯一
 
 glBindBuffer(GL_ARRAY_BUFFER, buffers[VERTICES]); //绑定顶点数组到标示符
 glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); //指定顶点数组数据源
 glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0)); //指定数据访问模式
 glEnableClientState(GL_VERTEX_ARRAY); //开启相应数组
 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[INDICES]);
 glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW );
 glPushMatrix();
  glTranslatef(0.0f, 0.0f, 0.0f);
  glColor3f(1.0, 0.4, 0.6);
  glRotatef(angle, 1.0, 1.0, 1.0); //第一个参数表示角度,后面负数代表顺时针,0代表不围绕该轴转动,正数代表逆时针 
  glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, BUFFER_OFFSET(0));
 glPopMatrix();
OpenGL 学习笔记-2015.4.18——立方体纹理映射-天空盒子-环境映射 立方体映射(cube-map)纹理是一种特殊类型的纹理,用于环境映射,使用一组图像并把他们作为立方体的面。立方体映射的6个面用正方形并且大小相同的6个子纹理表示。要从立方体纹理中采样的时候,使用的纹理坐标是3维,并且被看做来自原点的方向!方向指向用来读取纹理的立方体映射表面的位置。在这里例子中,有关于环境映射的代码,主要思想是通过观察向量和表面的法向量反射来确定采样的纹理坐标。     通过将一 阅读详情

相关推荐

【Directx3D游戏开发】——网格模型(mesh .x)

这次的笔记包含两个内容:1:简单介绍网格模型 和 .x文件;2、优化Mesh模型已取得更高的渲染效率,用Direct3D去加载一个.X文件。 游戏中的场景和角色都非常复杂,想要手工去填充这些模型的每一个顶点几乎是个不可能的事情。一般是用建模工具去完成,然后导出一个程序可以识别的网格模型。最常用的是3DMax,和Maya。 1:.X模型 X格式是微软提供的一种开放的数据存储格式。.X支

所学、所思、所悟——coderling 2494

【Direct3D游戏开发】——蒙皮骨骼动画学习笔记

蒙皮骨骼动画         一、蒙皮骨骼动画原理:蒙皮骨骼动画的思想来源于自然界,大多数动物都拥有一套骨骼,骨骼是身体的框架,身体的皮毛血肉都是依附于骨骼。当骨骼开始运动的时候,依附于对应骨骼的皮毛血肉都会随骨骼一起运动。而Mesh模型是由大量的三角形组成,三角形由定点组成。当我们运动时,有必要知道那些定点依附于那块骨骼,根据骨骼的移动来移动对应的顶点。

所学、所思、所悟——coderling 4623

利用MATLAB 4f光学系统,在Python中进行弗劳恩霍夫衍射和傅里叶面滤波——用镜头模拟光学图像处理。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

OpenGL学习日记-2015.3.13——多实例渲染

实例化(instancing)或者多实例渲染(instancd rendering)是一种连续执行多条相同渲染命令的方法。并且每个命令的所产生的渲染结果都会有轻微的差异。是一种非常有效的,实用少量api调用来渲染大量几何体的方法。OpenGL提供多种机制,允许着色器对不同渲染实例赋予不同的顶点属性。

所学、所思、所悟——coderling 4226

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

通信行业CentOS 7内核网络栈优化:高并发连接下UDP/TCP性能调优与系统资源管理

内容概要:本文聚焦于CentOS 7系统在通信行业高并发场景下的性能调优实践,重点围绕内核网络栈优化展开,涵盖UDP/TCP缓冲区调整、文件句柄与连接跟踪表扩容、TIME_WAIT状态复用、软中断分布优化及tuned工具的自动化调优。通过具体配置参数和实际案例(如VoIP软交换系统)深入解析各项调优措施的设计原理与实施效果,有效解决高CPS下丢包、连接失败等问题,并展望了向云化、eBPF等动态智能调优方向的发展趋势。; 适合人群:从事通信系统运维、网络开发或Linux系统性能优化的技术人员,具备一定操作系统和网络基础知识,工作经验1年以上的中初级工程师。; 使用场景及目标:①应用于软交换、媒体网关、信令网关等高并发通信设备的系统调优;②解决UDP丢包、conntrack表满、TCP连接队列溢出等典型性能瓶颈;③提升系统在小包高频、低时延要求场景下的稳定性和吞吐能力。; 阅读建议:建议结合实际生产环境或测试平台同步验证文中配置,重点关注参数背后的物理意义(如BDP、softirq、conntrack机制),并配合ss、conntrack、dmesg等命令进行调优前后对比分析,确保安全可控地实施变更。

基于事件驱动的lua--c/c++交互

PS:参考自《lua游戏开发指南》        事件驱动的程序可以增强系统的可扩展性——lua游戏开发指南原话        书中的事件驱动程序主要分为几个重要的部分,是lua与c/++的双向交互。                1、提供一个luaGlue函数在lua中注册事件处理函数。                 2、c/c++代码获取事件处理函数名称,在c/c++中调用lua编写

所学、所思、所悟——coderling 3713

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

luaGlue函数——lua中调用c/c++函数

所有能在lua中调用的c/c++函数都必须是遵循lua定义的函数原型:typedef int (*lua_CFunction) (lua_State *L),其中返回值整型int表示,函数返回值个数。lua调用c/c++函数,他们之间的交互依然通过lua栈,而且需要认识到的是,无论是lua调用c函数,还是c/c++调用lua函数,他们之间的交互用的栈并不是全局栈,每个函数都维护着一个自己的私有栈,

所学、所思、所悟——coderling 3127

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。

VC Spyglass调试秘籍:从Lint报错到代码修复的完整工作流

本文详细介绍了VC Spyglass调试的完整工作流,重点解析了如何高效定位和修复Lint检查中常见的XMRE-L跨模块引用错误。通过对比GUI与命令行(vc_static_shell)双模式调试技巧,并结合TCL脚本实现批量处理与规则豁免,帮助数字设计工程师系统化地提升代码调试效率与质量。

weixin_29246195的博客 575

OpenGL学习日记-2014.12.21--光照

一、光照和颜色密切相关,光照也是由不同颜色的光去描述,所以由于颜色的表示有两种模式:rgba模式和颜色索引模式,所以光照也分为rgba下的光照,和颜色索引模式下的光照。不过同样的是rgba模式下的光照灵活方便,主要还是使用rgba下的光照模式。 二、隐藏表面消除工具。 三、现实世界和OpenGL关照 四、材料和颜色 五、创建光源 六、选择光照模型 七、定义材料属性

所学、所思、所悟——coderling 2475

[Github]GitHub 2FA快速安全配置全攻略

GitHub强制要求用户启用双重身份验证(2FA)以提升代码安全。本文详细介绍了2FA的三种实现方式:TOTP应用验证(推荐)、SMS短信验证(备用)和硬件安全密钥(最安全),并提供了配置指南。特别推荐使用在线工具2FA.run快速测试TOTP功能。文章还涵盖恢复代码管理、企业级2FA策略制定以及常见问题解决方案,如时间同步问题、多设备同步等。通过强制2FA、定期审计和建立安全事件响应流程,开发者可构建更安全的代码管理体系。

冰茶的博客 2616

c/c++调用lua函数

lua环境由所有可操作的数据构成,编译好的函数,变量以及其他运行时内存。而所有的这些数据都将保存一个叫做lua_State的结构中。一个lua程序至少有个个lua_State,被称作lua环境,是用来发送和接收数据的地方,支撑着与其他语言的交互,具体来说就是利用lua栈(lua_Stack)来实现。 在c/c++中调用函数,具体过程可以分为几步:                

所学、所思、所悟——coderling 1645

从圆形到椭圆:CenterNet中高斯热图半径的自适应优化策略

本文深入探讨了CenterNet目标检测模型中高斯热图生成策略的优化,针对传统圆形高斯核在处理长宽比差异大目标时的局限性,提出了自适应椭圆高斯核的解决方案。通过数学推导和代码实战,详细阐述了如何根据目标边界框尺寸动态计算椭圆长短轴半径,生成更贴合目标几何形状的热图监督信号,从而有效提升模型,尤其是对无人机、车辆等不规则目标的定位精度。

alice7model的博客 985

2.4G/4G天线共存方案:Air8101多频段隔离设计实战(附波长计算表)

本文深入探讨了物联网设备中Wi-Fi 2.4GHz与4G LTE天线共存设计的实战方案。针对B40与2.4G频段紧邻带来的干扰挑战,文章系统性地提出了空间隔离、PCB布局优化、结构设计三重防线,并提供了关键的波长计算工具与系统级验证Checklist,旨在帮助工程师将多频段隔离设计从“玄学”变为可执行的工程规范。

weixin_29197051的博客 388

【Directx3D游戏开发】——简单渲染

这是个令人十分激动的时刻,用Directx3D去渲染出一些形状,还有会动的形状。感觉就跟中了彩票一样的心情。            好了,以上都是废话。在上一次的文章中学会了如何初始化Directx3D环境,now!开始真正的干事情了,首先要渲染一个三维三角形。在前面的代码的基础上其实添加小量代码就可以实现渲染了,不过还是要了解几个东西。            1.可变定点格式FVF(Flex

所学、所思、所悟——coderling 1342

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9916

【Direct3D游戏开发】——DirectInput 让世界动起来

其实我们是可以通过Windows消息和API取得键盘或者鼠标或者其他设备的输入信息,但这有个等待windows消息传送的延时,笔者试过直接在消息回调函数中相应键盘的上下左右消息去使场景中的模型进行旋转,感觉有明显的延时。这对于游戏玩家来说简直是噩梦,就好像我在玩lol,舍友都在用迅雷下AV一样的信息。而DirectX是直接与硬件进行交流,不需要去等待windows传送消息。DirectInput可

所学、所思、所悟——coderling 1327

从医疗成像到工业检测:CMOS图像传感器NIR技术的最新应用案例解析

本文深入解析了CMOS图像传感器NIR技术在医疗成像和工业检测中的最新应用案例。通过提升量子效率至70%,NIR技术实现了血管可视化、材料缺陷检测等突破性进展,显著提高了医疗诊断精度和工业质检效率。文章还探讨了系统集成关键考量和前沿发展趋势。

weixin_30879169的博客 87

SAPGUI excel 导出时遇到的运行时错误:STRING_SIZE_TOO_LARGE

当报表导出需求远超单一 XLSX 文件的物理承载力时,与其在 SAPGUI 中硬拼 2 GB 限制,不如把分页、过滤、流式写入作为设计前提。掌握 ABAP2XLSX 或 CSV + Power Query 等工具链,既能满足审计合规,又能让应用服务器远离的噩梦。祝你在下一次导出海量数据时,既高效又优雅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 638

OpenGL学习日记-2014.1.21--混合

混合可以实现很多效果,笔记单纯的记录混合的原理,和混合公式,混合函数的使用。最后分析书中的两个混合代码例子,两个例子结合起来说明了绘图顺序对混合最终效果的影响,及如何去规避这样的问题。在颜色中之前一直忽略的第四个分量alpha终于派上用场。在启用混合情况下,alpha常常用于把被处理片断的颜色值与已经存在帧缓冲区的像素颜色值进行组合。混合操作是在场景进行了光栅化并转换为像素之后,但是在最终的像素绘

所学、所思、所悟——coderling 1314

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Directx3D游戏开发】——Directx3D初始化

在了解如何初始化Directx3D之前应该首先懂得如何编写一个windows程序,创建一个windwos程序分为4步:1.设计一个窗口类;2.注册一个窗口类;3.创建窗口;4.显示及更新窗口。             以下是创建一个最简单的windows窗口的示例,参考自孙鑫的VC++深入详解. //-----------------------------------------------

所学、所思、所悟——coderling 1101

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Direct3D游戏开发】——重温Direct3D游戏开发详解 1、2、4章

由于此前已经看过一下,但没坚持看下去,这次重新浏览了下。         第一章:认识Directx与Directx SDK             Directx SDK包含:                         a.Direct3D:3D图形包  b.DirectDraw:2D图形包   c.DirectInput:为游戏输入提供各方面的支持

所学、所思、所悟——coderling 893

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 基于事件驱动的lua--c/c++交互
下一篇: OpenGL学习日记-2014.11.23--OpenGL变换
CoderLing
博客等级 码龄15年 40粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值