问题标签 [opentk]

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 投票
2 回答
4198 浏览

opengl - OpenTK:对 VBO 使用不同的颜色

情况:我正在使用 C# 中的 OpenGL 和 OpenTK 库进行绘图。

.

问题:我无法选择要绘制哪一个缓冲区/顶点集。

.

设置功能:

创建顶点

生成/绑定缓冲区。

*如果这很重要, Vertex.SizeInBytes为 16。

.

渲染代码:

.

id喜欢做什么:

在设置代码中,我创建了我的顶点(顶点包括位置和颜色)。我现在创建了一组,但我想再创建一组(只是具有不同颜色值的相同代码)。我这样做了,当然可以创建它并将其绑定到辅助缓冲区(vbo_id/vbo_secondary_id)。但是我怎么画呢?

我正在寻找这样的东西:

GL.DrawArrays 似乎在不控制绘制内容的情况下获取所有内容。

除了颜色之外,顶点/数组中的所有内容都将/是相同的。我只需要用另一个“配色方案”渲染相同的对象——数千个点。

任何帮助都将不胜感激。

0 投票
1 回答
554 浏览

iphone - MonoTouch:在 OpenGL ES 2.0 中启用多重采样

有没有办法使用 MonoTouch 和 OpenGL ES 2.0 激活多重采样?我在框架中找不到苹果扩展,所以我认为它没有实现?

0 投票
3 回答
604 浏览

c# - 仅在 C# 中的特定时间触发事件

我正在用 C# 编写视频游戏,我想只在游戏循环中的特定点处理某些事件(例如键盘/鼠标事件)。例如,有没有办法编写如下内容:

如果事件发生在循环中的其他点,我想等到handleAllEvents()处理它们。“事件”是指标准 C# 事件系统,例如:

如果问题表述不清楚,请告诉我。谢谢!

0 投票
1 回答
2652 浏览

c# - OpenTK 使用二次幂位图纹理将文本写入屏幕

我有一个问题,我是需要二次幂 (POT) 纹理并且似乎无法使用 NPOT 的幸运者之一。

通常,这不会让我太烦恼,因为我只会确保我需要使用的任何纹理都是 POT。但是,我在尝试将光标 X 和 Y 位置渲染到屏幕时遇到了问题。

这就是问题所在。如果我使用“text_bmp1.Width”和“text_bmp1.Height”,我得到的只是一个白框。(要纹理化的对象)。我认为这是因为我的 POT 问题。如果我使用 POT(512,1024 等)的宽度和高度来渲染纹理,但是 A)它不是我想要显示的字符串,B)它在几次渲染后被损坏,然后最终空白, C) 渲染的纹理没有被裁剪并且被非常奇怪地拉伸。

如果我只更改 TexCoord2(,) X 和 Y 值,C) 可以修复。我想知道是否有办法将文本图像动态填充到下一个 POT 并裁剪掉多余的部分?

为了清楚起见,我正在编写一个环境,它将 HP/GL2 PCL 源代码文件中的项目显示到屏幕上,然后再将其发送到打印机以获取动态药房标签。

如果有人需要更多说明,请告诉我。谢谢你

0 投票
2 回答
1287 浏览

iphone - MonoTouch OpenTK 和 UniformMatrix4

我正在尝试将 OpenTK Matrix4 传递给着色器制服,但 GL.UniformMatrix4 似乎没有合适的重载。重载接受floatorfloat[]ref float。同样,我找不到将 Matrix4 实例转换为浮点数组的方法 - 我已经看到一个在 Matrix4 上使用 ToArray 方法的示例,但我正在使用的分布中似乎没有。

当然,我遗漏了一些简单的东西,因为这对于将模型/视图/投影矩阵传递给着色器非常重要。

我正在使用带有最新版本 MonoTouch 的 OpenTK 版本。

0 投票
1 回答
1176 浏览

c# - OpentTK + Glu.UnProject() on various z values doesn't give overlapping points

I am using OpenTK in C# and I have been hitting a wall for the last few hours.

I'm trying to use Glu.UnProject() to create a ray through the universe where the user clicked. The ray it traces should be invisible to the user since it a line perpendicular to the plane of projection.

The problem is that the ray is only invisible when I'm using the basic camera position. If I move the camera (cameraX and cameraY), the line from DrawLine is displayed in the UI. The near and far points are not co-linear with the "eye" of the camera!

I isolated the problem code here :

Here is DrawLine. It uses hard-coded values to un-project the points at (100, 200) for the near (z = 0) and far (z = 1) planes. It then simply draws a line between these two points.

Here is a screenshot of the problem. The line on the left should not appear!

enter image description here

I've been investigating this for hours and I'm out of things to try. Any input would be a great help.

PS. White lines appears black because I removed light sources and everything that wasn't necessary to demonstrate the issue.

0 投票
1 回答
414 浏览

opengl-es - 3D精灵,写入正确的深度缓冲信息

我正在使用 Monotouch 和 openTK 为 iOS 编写粒子引擎。我的方法是投影每个粒子的坐标,然后在这个屏幕位置写一个正确缩放的纹理矩形。

它工作正常,但我在计算正确的深度值时遇到了麻烦,以便精灵将正确地过度绘制并被场景中的 3D 对象过度绘制。

这是我今天使用的代码:

然后我在屏幕坐标处绘制一个三角带,将上面计算的深度值作为 z 坐标。

结果几乎是正确的,但并不完全正确。我想我需要以某种方式考虑近和远的剪裁平面(在我的情况下,近是 1,远是 10000),但我不确定如何。我尝试了各种方法和算法,但没有得到准确的结果。

我很感激这方面的一些帮助。

0 投票
1 回答
891 浏览

c# - 无OpenGL机器中的OpenTK?

我对用于非游戏应用程序的OpenTK感兴趣,其主要关注点是快速完成复杂的 2D 图形(希望超出优化的 GDI+ 的限制)。 但是,如果计算机中没有硬件加速功能,我仍然希望我的应用程序能够运行,即使图形输出速度较慢。

是否可以使用 OpenTK,但仍然可以在没有显卡/驱动程序要求的计算机上运行代码?
我的搜索结果是Mesa3D,但我不知道它将如何集成到 .NET 应用程序中,以及这样的解决方案是否也适用于 Mono。

0 投票
2 回答
8312 浏览

c# - OpenTK - 如何按给定角度旋转对象

我正在使用http://viewport3d.com/trackball.htm上的教程来编写轨迹球。我计算了轴和角度,但是因为我只是 OpenTK 和 OpenGL 的初学者,所以我不知道如何将旋转应用于对象。请问有什么帮助吗?

代码由几个文件组成,这里有两个最重要的。

轨迹球.cs

和 Form1.cs

0 投票
1 回答
1231 浏览

graphics - OpenTK 圆形旋转

我正在使用 openTk 进行我的第一个项目。我正在为 3D 模型旋转创建虚拟轨迹球。它工作正常,但我需要添加不会随模型旋转的圆圈。这个圆圈应该可视化轨迹球。我实现旋转的代码是:

所以我想问一下是否有某种方法可以画圆,它不会受到这种旋转的影响(将在屏幕上的同一位置)。