openGL:带有着色器的线条

2024-01-14

如何使用着色器创建一条线(可能是彩色的)?我正在使用可编程管道,并且我是 openGL 的初学者。我找不到有关如何使用着色器绘制线条的示例。我想我必须将 VAO(顶点数组对象)加载到着色器中,但是然后呢?我应该使用哪些功能以及如何使用?


首先,设置使用着色器程序。然后使用画线glDrawArrays http://www.opengl.org/sdk/docs/man4/xhtml/glDrawArrays.xml(或元素,如果您的数据已建立索引)使用 mode=GL_LINES 或其他线条绘制模式之一。

以下是两端具有不同颜色的二维线的代码示例。如果着色模式设置为平滑,OpenGL 将沿线插值颜色。

struct LineSegment_t
{
  float x1, y1;
  float r1,g1,b1,a1;
  float x2, y2;
  float r2,g2,b2,a2;
};

int num_verts = lines.size()*2;
glBindVertexArray( line_vao ); // setup for the layout of LineSegment_t
glBindBuffer(GL_ARRAY_BUFFER, LineBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(LineSegment_t)/2 * num_verts, &lines[0], GL_DYNAMIC_DRAW);
glDrawArrays(GL_LINES, 0, num_verts );

如果您需要更大的灵活性,您可以通过从线条端点创建一个矩形(4 个点)来使用三角形绘制线条。在 2D 中,您可以通过使用所需线的法线/垂直线 (-y,x) 平移端点来创建 4 个点。在 3D 中,您需要确保三角形与摄像机对齐,就像广告牌中一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openGL:带有着色器的线条 的相关文章

随机推荐

  • 将 mysql 值赋给变量 inline

    为什么这不起作用我试图获取之前和当前的值来计算百分比变化 我正确地得到了两个值 但现在我如何重用它们来进行数学运算 当我尝试下面的命令时我得到 错误 1054 42S22 字段列表 中存在未知列 currentVal SELECT IFNU
  • 构建有关使用 Sun 专有 API 的警告

    我正在尝试清理我的构建环境 并发现了一些关于使用 Sun 专有 API 的警告 javac workspace
  • 为什么谷歌主页使用 (0, obj.func)(args) 语法?

    有时我盯着google com主页提供的js 发现他们倾向于使用 0 obj func args 句法 以下是脚本的摘录 var function var window this try mb function a return 0 win
  • 直到达到停止值为止的骰子数量

    我正在尝试计算骰子掷出的次数 直到达到明确的停止值 例如 我希望停止值为 100 我正在编写以下代码 sumofsides lt function stopvalue totalsum lt 0 while totalsum lt stop
  • Fabric.js 使用旋转手柄将旋转限制为 x 度

    我正在使用 Fabric js 并尝试使用旋转手柄允许画布上的任何对象旋转 不是自由 360 度 而是一次只能旋转 15 度 我非常努力地搜索 但到目前为止找不到答案 这可能吗 更短的解决方案 canvas on object rotati
  • ionic 4 - 添加插件时未捕获类型错误

    我创建了一个离子项目 版本 4 0 6 添加插件 cordova plugin x socialsharing 后出现以下错误https beta ionicframework com docs native social sharing
  • Phalcon PHP - 表单和模型验证

    Phalcon 支持 2 个验证组件 Phalcon Validation Validator Phalcon Mvc Model Validator 我不知道如何在我的情况下使用它们 我有一张注册表 其中包含 csrf username
  • Google Admin SDK - 服务帐户无法访问资源

    我已通过 console developers google com 创建了服务帐户客户端 生成的密钥 p12 证书 启用 DwD 等等 然后我继续在管理员中担任描述者API参考 https developers google com id
  • OpenLayers 3 图像和文本样式 zindex

    我注意到文本和图像样式在渲染时似乎不遵守其图层顺序 例如 当具有这些样式的许多要素靠近时 所有文本都会呈现在其他重叠矢量要素之上 有没有办法禁用或覆盖这种行为 谢谢 myFeature setStyle new ol style Style
  • LINQ - 按名称分组到 Dictionary>

    我正在构建一个图书馆应用程序 我有一个书籍列表 其中一些书籍的名称重复 同一本书的副本很少 我想将列表转换为 Dictionary gt 其中字符串是一本书的名称 列表将包含具有该名称的所有 Book 对象 我已经做到了这一点 var re
  • 在安装过程中使用 Inno Setup 删除未随 Inno Setup 安装的其他应用程序

    我有一个旧的 VB6 应用程序 它是使用非常旧的 16 位版本的 InstallShield 部署的 我已经使用 Inno Setup 创建了一个新的安装程序 以便通过更新对我的 VB6 应用程序进行 64 位友好 我的所有用户都已安装现有
  • 滚动时透明导航栏可见

    我看到一个透明的主题导航栏 向下滚动时效果非常好 这是向下滚动时发生的情况 不透明度从 0 变为 100 导航栏固定容器高度变小 颜色 fff 变成颜色 000 这是该主题演示页面的直接链接 http www awerest com dem
  • SAX 解析器可以在 Java 中使用 XPath 吗?

    我正在尝试迁移我的一个使用的类DOM解析有很多XPath表达式到SAX解析 DOM解析对我来说很好 但我尝试解析的一些文件太大 导致服务器超时 我想重复使用XPath与SAX解析但我不确定是否可能 如果不可能请你帮助我 因为我不知道当我仅使
  • Python 有没有模拟键盘操作的库?

    我遇到的问题是我有这个 Python 脚本来启动应用程序 应用程序启动后 GUI 显示在屏幕上 我想将其停用 可以通过激活另一个窗口 最小化此应用程序或按 WindowsXP 的 显示桌面 键来手动完成此操作 那么有什么办法可以用Pytho
  • AngularJS:当解析 $http 返回响应 obj 而不是我的 obj 时,$routeProvider

    我正在尝试解决几个 ajax 调用 以便我的控制器需要的数据在它 及其提供的指令 执行之前可用 执行顺序有效 但是 注入到控制器中的结果不是返回我创建的对象 而是 http 的响应对象 config data headers status
  • VSCode 更改默认 python 版本

    当我在 VSCode 上编码并且不指定 python 版本时 它设置为 python2 7 17 我想将其默认设置为python3 6 我尝试通过在脚本顶部添加以下内容来实现此目的 usr bin python3 6但它不起作用 usr b
  • Npm 错误 - Windows NT - 如何解决

    当我尝试 npm install 时出现以下错误 npm ERR Windows NT 6 1 7601 npm ERR argv C Program Files nodejs node exe C Program Files nodejs
  • 如何获取Infinispan缓存中数据的大小,替代ehcache的calculateInMemorySize?

    我正在从 ehcache 迁移到 infinispan 在ehcache中我们有 net sf ehcache Cache calculateInMemorySize 来计算内存大小 如何计算 infinispan 中的内存大小 托马斯是对
  • Android Studio 是否有层次结构查看器或布局检查器?

    我尝试在这里搜索但找不到答案 我正在寻找一种方法来启动层次结构查看器 http developer android com tools help hierarchy viewer html从 Android Studio 中启动 而不必在命
  • openGL:带有着色器的线条

    如何使用着色器创建一条线 可能是彩色的 我正在使用可编程管道 并且我是 openGL 的初学者 我找不到有关如何使用着色器绘制线条的示例 我想我必须将 VAO 顶点数组对象 加载到着色器中 但是然后呢 我应该使用哪些功能以及如何使用 首先