问题标签 [vertex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4734 浏览

directx - 调试directx像素/顶点着色器?

我试图弄清楚如何在 DirectX 中调试像素和顶点着色器,我尝试过使用 Pix for Windows,但发现它有很多错误并且实际上无法操作。是否有替代方法可以让我在自己的应用程序中调试这些着色器?

0 投票
3 回答
3234 浏览

opengl - 我可以使用顶点着色器来显示模型法线吗?

我目前正在使用 VBO 作为我正在使用“glDrawArrays(GL_TRIANGLES, ...);”绘制的 (3DS) 模型的纹理坐标、法线和顶点。为了调试,我想(暂时)在绘制模型时显示法线。我是否必须使用立即模式来绘制从顶点到顶点+法线的每条线 - 或者 - 用顶点和顶点 + 法线填充另一个 VBO 以绘制所有法线...... - 或者 - 顶点着色器有没有办法使用顶点和绘制模型时已经传入的法线数据来计算绘制法线时使用的V+N?

0 投票
1 回答
562 浏览

iphone - 使用opengl,如何组合背景图像和较小的扭曲纹理?

我正在尝试在 iphone 上制作图像拉伸效果。我制作了一个顶点数组并在背景图像的任意半径内移动每个索引的纹理数据。然后进行以下调用以显示:

我的问题是被拉伸区域的边缘看起来非常不稳定,网格尺寸相对较小,例如 32x32 甚至 64x64。任何更大的都会使它更平滑,但速度要慢得多。

所以我尝试添加背景图像的副本,并将顶点数组限制为仅受影响的索引。我使用更小的网格尺寸,但用于更小的区域。上面的绘图代码现在看起来像:

显示受影响的区域,但背景图像似乎闪烁并消失,我的拉伸区域漂浮在黑色背景上。显然,我的背景首先呈现,然后我上面的代码覆盖并仅呈现我的顶点数组中的数据。

有没有人对如何有效地组合图像的绘图有建议?

我计划为背景制作第二个简单的顶点数组,并在我的 if 语句之前调用 glDrawArray,以便所有绘图都在一个方法中完成。这是解决这个问题的正确方法吗?有没有更好的办法?是否应该以某种方式将所有图像数据组合成 1 个简单的顶点数组?

0 投票
1 回答
1719 浏览

opengl - Cocoa 和 OpenGL,如何使用数组设置 GLSL 顶点属性?

我对 OpenGL 相当陌生,我似乎遇到了一些困难。我在 GLSL 中编写了一个简单的着色器,它应该通过给定的关节矩阵来转换顶点,从而实现简单的骨骼动画。每个顶点最多有两个骨骼影响(存储为 Vec2 的 x 和 y 分量)、与变换矩阵数组相关联的索引和相应权重,并在我的着色器中指定为“属性变量”,然后设置使用“glVertexAttribPointer”函数。

这就是问题出现的地方......我已经设法正确设置矩阵的“统一变量”数组,当我在着色器中检查这些值时,它们都被正确导入并且它们包含正确的数据。但是,当我尝试设置联合索引变量时,顶点乘以任意变换矩阵!他们跳到空间中看似随机的位置(每次都不同),我假设索引设置不正确,并且我的着色器正在将我的联合矩阵数组的末尾读取到以下内存中。我不完全确定为什么,因为在阅读了我能找到的关于该主题的所有信息后,我很惊讶在他们的示例中看到相同(如果不是非常相似)的代码,而且它似乎对他们有用。

我已经尝试解决这个问题很长一段时间了,它真的开始让我感到不安......我知道矩阵是正确的,当我手动将着色器中的索引值更改为任意整数时,它读取正确的矩阵值并按应有的方式工作,通过该矩阵转换所有顶点,但是当我尝试使用我编写的代码来设置属性变量时,它似乎不起作用。

我用来设置变量的代码如下...

我的顶点着色器看起来像这样......

这真的开始让我感到沮丧,任何和所有的帮助都将不胜感激,

——安德鲁·戈托

0 投票
4 回答
5203 浏览

opengl - 将基本 3D 模型导入 OpenGL 应用程序

好的...我正在做简单的 OpenGL ES 编程,当我说简单时,我所做的最复杂的事情只不过是美化的斜角立方体和 L 形。(非常像俄罗斯方块,但在 3D 中。)但是,将所有顶点数据输入应用程序要么是 a)手工编码(UGH!)要么 b)第 3 方游戏引擎(双 UGH !!!)或者你使用一些3rd 方文件类型导入器。(部分呃!)

除了一个例外。

我一直在 Mac 上使用一个名为 Cheetah3D 的程序,它是一个非常好的建模器(不是很好,但很可靠......很好),而且我在其他地方没有看到的一件事是能够直接导出你的模型到 c-ready 头文件。它为您导出所有数组,甚至为您提供渲染它们的代码(尽管在注释掉的块中作为参考。)

虽然这对我们所做的 90% 都很好,但有些事情是建模者无法做到的,比如允许我为两个不同的面指定相同的顶点,但为每个面使用不同的法线……甚至混合平面和弯曲的法线(或者更确切地说它们如何渲染)在同一模型中。

请注意,这些功能很容易在 .obj 文件中描述,因为您的法线和顶点位于不同的数组中,您可以轻松地与面一起指定它们,但它们不会以这种方式出现在头文件中。

SO... obj 文件(或任何其他适用于此问题的文件类型...)将其放入代码的最佳方式?

想法?

0 投票
1 回答
1254 浏览

opengl-es - 具有法线渲染的 OpenGL ES 多边形(注意“ES!”)

好的......想象我有一个相对简单的实体,它有六个不同的法线,但实际上有接近 48 个面(每个方向 8 个面),并且面之间有很多共享顶点。在 OpenGL 中渲染它的最有效方法是什么?

我知道我可以将顶点放在一个数组中,然后使用索引数组来渲染它们,但是我必须不断打破我的渲染步骤来改变法线(即设置法线 1...渲染 8 个面...设置法线2...渲染8个面等)因此,我必须维护一个索引数组数组...每个法线一个!不好!

我可以做到的另一种方法是使用单独的法线和顶点数组(甚至将它们交错)但这意味着我需要法线与顶点的比例为一比一,这意味着法线将被复制 8 倍以上比他们需要的!在具有球形甚至曲面的物体上,每个法线很可能都是不同的,但对于这一点,这似乎真的是在浪费内存。

在一个完美的世界中,我希望我的顶点和法线数组具有不同的长度,然后当我去绘制我的三角形或四边形时,为该顶点指定每个数组的索引。

现在 OBJ 文件格式允许您准确指定...一个顶点数组和一个不同长度的法线数组,然后当您指定要渲染的面时,您指定一个顶点和一个法线索引(以及一个 UV 坐标,如果您也在使用纹理)这似乎是完美的解决方案!48 个顶点但只有 8 个法线,然后是定义形状面的索引对。但我不确定如何在 OpenGL ES 中渲染它(再次注意“ES”。)目前我必须“非规范化”(对不起那里的 SQL 双关语)法线回到 1 对 1顶点数组,然后渲染。只是浪费我的记忆。

有人帮忙吗?我希望我在这里遗漏了一些非常简单的东西。

标记

0 投票
1 回答
560 浏览

java - Java OpenGL顶点缓冲区对象不起作用

我第一次尝试实现 Open GLs Vertex Buffer Objects,我得到的只是黑屏。

我尝试使用 glOrtho 而不是 glPerspective,但效果不佳。

谢谢你的帮助

这是我的代码:

0 投票
2 回答
3306 浏览

opengl-es - Opengl ES - 绘制多个顶点的平面

使用适用于 Android 的 Opengl ES 在绘制带有纹理的正方形时遇到问题。从远处看,它们看起来很好,但是当靠近模型时,纹理会变坏。我们认为这是因为模型仅包含四个顶点:

浮动 [] 坐标 = {

-1, 1, 0.0f,

1, 1, 0.0f,

-1, -1, 0.0f,

1, -1, 0.0f,
};

这就是为什么我们要扩展模型,使它由 10x10 多边形组成,所以问题是:我们必须按什么顺序绘制顶点才能创建一个类似这样的平面:

http://cocktailgenerator.net/cis4/plan.png

使用 GL_TRIANGLE_STRIP 我们可以绘制一个多边形矩形,如 (1x10) 并且效果很好,但是我们如何将其扩展为 10x10?

0 投票
2 回答
1281 浏览

iphone - 我在使用 GLshort 来表示顶点和法线时遇到问题

随着我的项目接近优化阶段,我注意到减少顶点元数据可以极大地提高 3D 渲染的性能。

最终,我仔细搜索并找到了来自 stackoverflow 的以下建议。

在 OpenGL ES 顶点数组中使用 GL_SHORT 而不是 GL_FLOAT

您如何使用 GLshorts 表示法线或纹理坐标?

在 iPhone 上加速 OpenGL ES 1.1 的建议

简单的实验表明,将顶点和法线从“FLOAT”切换到“SHORT”并不困难,但让我烦恼的是,当您将顶点缩小到其原始大小时(使用 glScalef),法线乘以倒数的规模。对此的自然补救措施是在提交给 GPU 之前将法线与比例相乘。然后,我的短法线几乎变成了 0,因为比例因子通常小于 0。Duh!

如何同时对顶点和法线使用“短”?我一直在尝试这个和那个大约一整天,但到目前为止我只能选择“float vertex w/ byte normal”或“short vertex w/ float normal”。

您的帮助将不胜感激。

0 投票
5 回答
5347 浏览

math - 顶点的副法线是其法线和切线的交叉点吗?

我试图找出在图形编程的上下文中什么是副法线,但很短,我在一个网站上看到副法线被计算为法线和切线之间的叉积(即交叉(法线,切线) ),这是计算副法线的正确方法吗?