重启图元的问题

opengl重启图元 opengl中有一个重启图元的函数:  glEnable(GL_PRIMITIVE_RESTART)     glPrimitiveRestartIndex(GLuint index)  //实例中定义为0xffff       当绘制大量相同类型的图元时,例如GL_TRIANGLE_STRIP,GL_LINE_STRIP等等,使用glDrawElement函数时,有些点是链接不上 阅读详情

红宝书里面的 2.6.4 重启图元 一开始没理解 后来找了下面的资料就OK了

void glPrimitiveRestartIndex(GLuint index);

 Primitive restart functionality allows you to tell OpenGL that a particular index value means, not to source a vertex at that index, but to begin a new primitive of the same type with the next vertex. In essence, it is an alternative to glMultiDrawElements. This allows you to have an element buffer that contains multiple triangle strips or fans (or similar primitives where the start of a primitive has special behavior).

The way it works is with the function glPrimitiveRestartIndex. This function takes an index value. If this index is found in the index array, the system will start the primitive processing again as though a second rendering command had been issued. If you use a BaseVertex drawing function, this test is done before the base vertex is added to the restart. Using this feature also requires using glEnable to activate it, and the corresponding glDisable to turn it off.

Here is an example. Let's say you have an index array as follows:

{ 0 1 2 3 65535 2 3 4 5 }

If you render this as a triangle strip normally, you get 7 triangles. If you render it with glPrimitiveRestartIndex(65535) and the primitive restart enabled, then you will get 4 triangles:

{0 1 2}, {1 2 3}, {2 3 4}, {3 4 5}

Primitive restart works with any of the versions of these functions.


Warning: It is technically legal to use this with non-indexed rendering. You should not do this, as it will not give you a useful result.

OpenGL数据可视化(5)绘制三维曲面 介绍了如何使用OpenGL绘制三维曲面,实现类似MATLAB中surface函数的效果,涉及GL_TRIANGLE_STRIP三角条带、GL_PRIMITIVE_RESTART图元重启等。 阅读详情

相关推荐

OpenGL基础教程:使用原始重启Primitive Restart

在OpenGL中,原始重启允许我们在一个顶点流中插入一个特殊的值,以指示OpenGL应该在此处结束当前的图元并启动一个新的图元。通过设置重启索引,我们可以在一个顶点流中插入多个不相交的三角形,从而避免使用繁琐的GL_TRIANGLE_STRIP或GL_TRIANGLE_FAN绘制模式。本文将介绍OpenGL中原始重启的基本原理,并且提供一个使用原始重启的简单示例程序。在以上的程序中,我们定义了一个包含重启索引的顶点流,然后使用GL_TRIANGLE_STRIP模式进行绘制,使其绘制两个不相交的三角形。

DevCharm的博客 492

OpenGL 图元重启

在 http://blog.youkuaiyun.com/yulinxx/article/details/77894764 基础上添加参考: 1 OpenGL ES 3.0: 图元重启(Primitive restart) - 皮斯卡略夫 - 博客园 作者:psklf 出处: http://www.cnblogs.com/psklf/p/5750783.html2 OpenGL Separati

... 2140

OpenGL 进阶系列05 - OpenGL 图元重启(primitiverestart)

OpenGL 图元重启(Primitive Restart)是一种机制,允许你在绘制一个图元的过程中“重启”图元的序列,从而在一个绘制调用中使用多个不连续的顶点。这样,你可以将多个图形(如三角形、线段等)组合成一个单独的绘制调用,而不需要分别调用多次。1. glPrimitiveRestartIndex 介绍:它是 OpenGL 的一个函数,用于设置图元重启的索引值。这个索引值是在绘制图元时用于指示重启的特殊值。

GPU全栈博主 557

普元 EOS Platform 7.5 使用webervice图元调用流程提供的createProcessInstance服务报错:Caused by: WSDoAllReceiver: Incomi

普元 EOS Platform 7.5 使用webervice图元调用流程提供的createProcessInstance服务报错:Caused by: WSDoAllReceiver: Incoming message does not contain required Security header

普元开发者乐园 1564

OpenGL原始重启的实例编程

OpenGL是一个用于图形渲染的开放式图形库,它提供了一系列函数和工具来绘制各种图形。其中之一是原始重启(Primitive Restart)功能,它允许在绘制图元时通过指定特定值来分隔图元,从而使得绘制多个图元更加高效。在本文中,我们将介绍如何使用OpenGL实现原始重启,并提供相应的源代码。接下来,我们将演示如何使用原始重启功能来绘制一个由多个三角形组成的立方体。接下来,我们将演示如何使用原始重启功能来绘制一个由多个三角形组成的立方体。首先,我们需要在OpenGL中启用原始重启功能。

PixelNinja的博客 130

OpenGL图元重启基础绘制

http://blog.youkuaiyun.com/yulinxx/article/details/77896541 在 http://blog.youkuaiyun.com/yulinxx/article/details/77894764 基础上添加 参考: 1 OpenGL ES 3.0: 图元重启(Primitive restart) - 皮斯卡略夫 - 博客园 作者:psklf 出处: http://www.cnblogs.com/psklf/p/5750783.html 2 OpenGL Separating Polygons Inside VBO - Stack Overflow 出处: https://stackoverflow.com/questions/26944959/opengl-separating-polygons-inside-vbo You can use primitive restart. The downside of this is that you need an index array, which may not have been necessary otherwise. Apart from that, it’s straightforward. You enable it with: glPrimitiveRestartIndex(0xffff); glEnable(GL_PRIMITIVE_RESTART); 1 2 You can use any index you want as the restart index, but it’s common policy to use the maximum possible index, which is 0xffff if you use indices of type GL_UNSIGNED_SHORT. If you use at least OpenGL 4.3, or OpenGL ES 3.0, you can also replace the above with: glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX); 1 2 Then you set up an index array where you insert a 0xffff value at every position you want to start a new polygon, and bind the index array as usual. Then you can draw all the polygons with a single glDrawElements() call. 3. Best Practices for Working with Vertex Data 出处: https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html

osg 图元重启

osg::Geometry* createLine2(const std::vector<osg::Vec3d>& allPTs, osg::Vec4 color) { int nCount = allPTs.size(); osg::ref_ptr<osg::Geometry> pGeometry = new osg::Geometry(); osg:...

artisans的专栏 424

OpenGL简单的长方形创建 Vertex Data

简单的长方形创建 Vertex Data 创建Vertex Buffer 对象

OSG图元重启动绘制

1.OpenGL图元重启动 图元重启功能,是OpenGL3.1版本以后支持的一项,快速绘制重复图元的技术。 当需要处理较大的顶点数据集的时候,我们可能会被迫执行大量的OpenGL绘制操作,并且每次绘制的内容总是与前一次图元的类型相同(例如GL_TRIANGLE_STRIP)。当然,我们可以使用glMultiDraw*()形式的函数,但是这样需要额外去管理图元的起始索引位置和长度的数组。 OpenG...

kasteluo的专栏 1725

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录(20170803YC) 本次总结主要实现的功能如下:用MEXE02软件在步进电机驱动器中设置好控制动作,每个控制动作有一个特定的编号。之后通过PC和驱动器之间的485通讯,发送相关指令,使步进电机按照一定编号的控制动作运转。 参考资料:东方马达步进电机AZM66AK-HS100+AZD-KD的产品手册,可在官网下载。 A....

dahailuoa6的博客 1万+

autoDL算力云装Xinference[坑与步骤]

在页面直接点击下载会出现下着下载进度条消失,试了几次才出现这个报错,现在我们就继续安装缺少的包吧。这一步成功绕开了系统盘空间限制。先租用一个合适的服务器,建议不要选最新版本,跟我选的一样即可,不然后面会出现。最近在 AutoDL 上尝试部署。🚫 不要直接使用以下命令。点击下面链接即可打开。

ngadminq的博客 2382

osg重启图元

osg重启图元 osg重启图元 OpenGL重启图元 OpenGL重启图元 opengl中相关的重启图元函数 glEnable(GL_PRIMITIVE_RESTART) glPrimitiveRestartIndex(GLuint index)

qq_36665171的博客 486

大模型-internvl高通qnn运行源码解读

模型链接:https://huggingface.co/OpenGVLab/InternVL2-2B论文官方简要说明 https://internvl.github.io/blog/2024-07-02-InternVL-2.0中文解读 https://zhuanlan.zhihu.com/p/702946079在线demo https://internvl.opengvlab.com/

点滴的岁月 1832

WebGL2系列之图元重启

背景 在使用WebGL绘制图形的时候,大多数情况下,绘制一个图形的时候,其各个图元都是相连的。 但是在一些情况下,我们需要绘制图元不相连的图形,如果绘制的模式是gl.TRAINGLES或者gl.LINES,也是可以达到的,但是如果绘制的模式是gl.TRAINGLE_STRIP,gl.TRAINGLE_FAN,gl.LINE_STRIP,g...

weixin_33894992的博客 401

【VAE学习笔记】全面通透地理解VAE(Variational Auto Encoder)

完整笔记:http://www.gwylab.com/note-vae.html 李宏毅老师的教程视频:https://www.bilibili.com/video/av15889450/?p=33 —————————————————————————————————   依据李宏毅老师的讲解,我整理了一番VAE的笔记。先简单介绍一下VAE,VAE作为一个生成模型,其基本思路是很容易理解的:把一堆真...

a312863063的博客 14万+

从Landsat 8到哨兵2号:手把手教你用ENVI处理不同卫星数据的NDVI(附常见错误排查)

本文详细解析了从Landsat 8到哨兵2号的多源遥感数据NDVI计算全流程,包括不同卫星的波段设置差异、ENVI处理步骤及常见错误排查。通过实战指南和代码示例,帮助用户高效处理NDVI数据,特别针对哨兵2号数据的特殊处理提供了专业建议,适用于植被监测和遥感分析。

weixin_27741699的博客 327

关于opengles3.0图元重启

使用场景:当需要绘制两个以及两个不相互连接的多个图形的时候,需要使用。如需要绘制两个不相互连接的物体A和B,如何才能高效的绘制呢?在Opengles3.0提供了图元重启的功能,可以介绍调用开销;

Jackery's Special Column 689

UE5.4像素流送实战:GPU驱动、WebRTC与系统级调优全解析

像素流送是将实时3D渲染画面通过WebRTC编码推流至浏览器的关键技术,其本质是GPU硬件编码(如NVENC)与低延迟网络传输(UDP+BBR)的深度协同。理解其原理需跨越图形API(Vulkan/DX12)、实时音视频(H.264/H.265)、WebRTC信令与NAT穿透四大技术层。技术价值在于突破终端算力限制,支撑远程工业仿真、云VR看房等高交互场景;但落地难点集中于基础设施层——如NVIDIA驱动与UE5.4.3的CUDA Toolkit 12.2兼容性、Linux内核TCP/UDP参数调优、GPU

weixin_32943857的博客 614

【OPENGL ES 3.0 学习笔记】延伸阅读:图元

图元重启(Primitive Restart)是OpenGL/OpenGL ES中优化连续图元(如三角形带、线段带)绘制性能的关键技术。它通过在索引数组中插入特殊重启索引(如0xFFFFFFFF)作为分隔符,使GPU能在单次绘制调用中处理多组独立连续图元,避免传统多调用或冗余顶点方法带来的性能损耗。核心技术流程包括:启用GL_PRIMITIVE_RESTART、设置重启索引、构造含分隔符的索引数组。该技术特别适用于网格、地形等需要大量连续图元的场景,能显著降低CPU-GPU通信开销,但需注意重启索引与数据类

u012739527的博客 1015

Jetson Nano(1)——笔记本电脑控制

笔记本电脑控制Jetson Nano没有显示屏如何控制Jetson Nano一、使用ssh客户端连接到Jetson Nano的命令端1.将电脑的网线口和jetson nano的网线口通过网线连接2.在控制面版中打开“更改配适器设置”3.查找jetson nano的ip地址4.利用putty链接二、远程桌面配置 没有显示屏如何控制Jetson Nano Jetson Nano相当于一个微型电脑,能快...

weixin_43619070的博客 1万+

YOLOv11改进 | Conv篇 | AKConv轻量级架构下的高效检测(附代码 + 修改方法 + 二次创新)

本文给大家带来的改进内容是AKConv是一种创新的变核卷积,它旨在解决标准卷积操作中的固有缺陷(采样形状是固定的),AKConv的核心思想在于它为卷积核提供了任意数量的参数和任意采样形状,能够使用任意数量的参数(如1, 2, 3, 4, 5, 6, 7等)来提取特征,这在标准卷积和可变形卷积中并未实现​​。AKConv能够根据硬件环境,使卷积参数的数量呈线性增减非常适用于轻量化模型的读者)。

Snu77的博客 1万+

7.OpenGL ES之图元种类

三角形 GL_TRIANGLES。三个点一组,如果不够三个点就会被丢弃 ,可绘制n/3个三角形 GL_TRIANGLE_STRIP。顶点按照顺序依次组成三角形绘制,最后实际形成的是一个三角型带。可绘制n-2个三角形 GL_TRIANGLE_FAN。将第一个点作为中心点,其他点作为边缘点,绘制一系列的组成扇形的三角形,可绘制n-2个三角形 线 GL_LINES。以给定的顶点为依据,每两个绘制...

Sloven 504

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OGLES图元和绘制函数详细总结

图元的类型点,直线,三角形。 绘图模式 //点精灵,顶点着色器输出gl_PointSize指定半径,片段着色器中用gl_PointCoord来指定坐标,坐标是左上为原点和OGL屏幕坐标系(左下为原点)相反所以用gl_PointCoord指定纹理时候要小心看是否要转换,uv坐标都是基于屏幕坐标系的,但是一般顶点信息处理会根据选择DX还是OGL处理好顶点uv传入都是正确的。 #define GL

自由理想的足迹 3077

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OpenGL ES 3.0: 图元重启(Primitive restart)

目录 背景概述 图元重启介绍 编程指南 背景概述 在OpenGL绘制图形时,可能需要绘制多个并不相连的图形。这样的情况下这几个图形没法被当做一个图形来处理。也就需要多次调用 DrawArrays 或 DrawElements. 如果图形很多,可能会需要用一个循环来调用: for (i...

weixin_30326745的博客 482

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OpenGL ES 3.0 图元装配

1. 前言 之前已经把纹理的渲染给弄出来了,但是又遇到一个新的问题,那就是图元装配,比如说我已经把图片给显示出来了,但是呢,并没有做到让它显示到具体的位置,而跟这个位置相关的则需要靠图元装配。 图元装配发生在顶点着色器处理图元顶点之后,在这一阶段,执行裁剪、透视分割和视口变换操作。而光栅化是将图元转化为一组二维片段的过程,这些片段由片段着色器处理,代表可以在屏幕上绘制的像素,发生在图元装...

weixin_30332241的博客 84
上一篇: 2014找工作总结-机会往往留给有准备的人
下一篇: p(y|x,z)=p(x,y,z)/p(x,z)的解释
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值