问题标签 [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 投票
4 回答
1517 浏览

c# - OpenGL C#,颠倒加载纹理

有没有办法在翻转 y 坐标的情况下将图像加载到 openGL 中?(上下翻转)。我正在使用 .NET Bitmap 和 BitmapData 类,并将 BitmapData.Scan0 传递给 OpenGL。

在 CPU 上使用翻转位图.RotateFlip()太慢了。

除了翻转所有的 texcoords,我可以在我们的引擎中解决这个问题吗?

0 投票
1 回答
5163 浏览

opengl - 一起使用 GL_TEXTURE_2D 和 GL_TEXTURE_3D

前言

我有一个绘制以下内容的测试应用程序:

在此处输入图像描述

左三角形通过以下方式绘制:

直角三角形用以下方式绘制:

纹理通过 FBO 渲染。

问题

我很难让 GL_TEXTURE_2D 和 GL_TEXTURE_3D 一起玩。一切正常,直到我取消注释以下代码部分:

结果,我得到以下图像(2D 纹理停止工作):

没有任何

有没有办法让 2D 和 3D 纹理一起工作?我需要通过 FBO 将 3D 纹理渲染为 2D 纹理。有没有办法做到这一点?

完整的源代码

0 投票
3 回答
3260 浏览

c# - Visual C# 中的哪个库用于图形编程,Tao 或 OpenTK?

我听说最新的 OpenGL 不再有 glBegin 了。换句话说,事情发生了很大变化,我想知道我应该使用哪个库在 c# 中进行 OpenGL 编程?

我将为 CAD 建模应用程序进行图形编程。

谢谢

0 投票
2 回答
474 浏览

c# - Windows 与 Linux 上的图形库

Tao 和 OpenTK 是您可以在 Windows 上与 c# 一起使用的两个图形库。两者都不活跃,Tao 最后一个版本是 2008 和 OpenTK 2010。

但是我看到 Mesa 在 Linux 上很活跃,所以我想知道我的项目应该使用什么。我需要开发 CAD 建模应用程序。

我应该使用 Mesa 和 Linux 吗?OpenGL 变化很大,我需要一些最新的东西。

谢谢

0 投票
1 回答
541 浏览

c# - 我将如何创建更动态的统一着色器?

我正在尝试创建一个统一缓冲区对象(UBO),我需要用统一填充数组。我目前的做法是使用硬编码结构。

然后我使用编组从该结构中获取字节数组,并用该数组填充我的 UBO。

我想知道是否有一种更动态的方式来保存统一信息,而不必使用 System.Reflection 来按需创建结构。当我做片段和顶点着色器时,我能够使用一个字符串,然后是 GL.CreateShader() 和 GL.ShaderSource。我能想到的唯一一点是 ShaderType.GeometryShader 实际上是统一着色器,它的标签不同。

任何方法都会受到赞赏,即使这意味着完全不同。如果我遗漏了任何信息,我深表歉意,并会根据要求尝试添加。

0 投票
2 回答
1054 浏览

3d - 没有填充 3D 图形的球体

我想画一个像这样的立方体和圆圈(没有填充的球体)。我正在使用 OpenTK

http://farm7.static.flickr.com/6074/6097051938_cb0b798ce0_z.jpg

我遇到了以下问题:我尝试在 Cube 的顶部画一个圆圈。但是当我们旋转立方体和圆时,圆变成了椭圆。

我尝试绘制球体而不是圆形。但不能像上图那样。有人有解决方案吗?提前致谢!

这是我的 http://farm7.static.flickr.com/6061/6096573967_22d56b2c2a_z.jpg

0 投票
1 回答
521 浏览

opengl-es - 在 OpenGL ES 2.0 中快速设置深度缓冲区内容

我正在使用 OpenTK、opengl ES 2.0,并且希望将深度缓冲区清除为每次重绘时从外部加载的缓冲区。

我想要实现的是在相机和背景对象不移动的情况下将屏幕清除为预渲染图像及其深度缓冲区,然后仅以传统方式在此之上渲染移动对象。

如何以高效的方式做到这一点?

0 投票
2 回答
5721 浏览

opengl - 将 3D 点投影到 2D 屏幕坐标 OpenTK

使用 Monotouch 和 OpenTK 我试图获得一个 3D 点的屏幕坐标。我设置了世界视图投影矩阵,OpenGL 理解它并完美地投影了我的 3D 模型,但是如何使用相同的矩阵将一个点从 2D 投影到 3D?

我以为我可以简单地使用:

然后在projected2DPos 中有投影屏幕坐标。但生成的 Vector4 似乎并不代表正确的投影屏幕坐标。而且我不知道如何从那里计算它。


我发现我需要除以 Vector4.w,但是我仍然得到错误的值。现在使用这个方法:

虽然我看不到任何错误......:S

0 投票
1 回答
3554 浏览

c# - 在 OpenTK (C#~.NET) 中获取鼠标窗口坐标

我正在创建一个具有 1 到多个 OpenGL 视图表单的 GUI。现在基础工作正常了,我有一个查看器表单列表,每个表单都在其设计器类中封装了一个 OpenTK.GLControl 成员。

我需要在将图标拖到的窗口中获取实际光标位置,以便当我释放左键单击时,它会将其放入该位置的 GL 窗口中。这是从它实际需要做的事情中简化的,但只是作为第一步,一旦发生这种情况,其余的就很容易了。

现在,当我使用 GLControl.MousePosition.X、GLControl.MousePosition.Y 来获取光标位置时,它实际上给了我屏幕位置,而不是窗口中的位置。不幸的是,这对于我需要做的事情并不是特别有用。

我看过 OpenTK.GameWindow.Mouse ,这在我的小测试项目中似乎工作得很好。它得到光标在窗口中的确切位置。但是,我不能在这个项目中使用游戏窗口,因为游戏窗口没有一些 GLcontrol 具有的对 GUI 形式更友好的东西,例如 Dock、TabIndex、Paint 和其他与 GUI 相关的成员。(或者至少我似乎无法找到任何方式让 GameWindow 支持它们,如果我错了请告诉我)

所以我真正要问的是,有没有人有一个非常好的/简单的方法让我使用 OpenTK.GLControl 在表单中获取光标的窗口位置

事实上,即使这很棘手,请告诉我:) 我只需要能够做到!

0 投票
1 回答
1672 浏览

c# - 将建模矩阵应用于视图矩阵 = 失败

我在 OpenGL 中移动和旋转对象时遇到问题。我正在使用 C# 和 OpenTK (Mono),但我想问题在于我不了解 OpenGL 部分,所以即使你对 C#/OpenTK 一无所知,你也可以帮助我。

我正在阅读 OpenGL SuperBible(最新版),并尝试用 C# 重写GLFrame。这是我已经重写的部分:

所以我在一些随机坐标上创建了一个新的游戏对象(GLFrame):GameObject go = new GameObject(0, 0, 5);并稍微旋转一下:go.RotateLocalZ(rotZ);。然后我使用Matrix4 matrix = go.GetMatrix();和渲染框架获取矩阵(首先,我设置查看矩阵,然后将它与建模矩阵相乘)

DrawCube(float[] color)是我自己绘制立方体的方法。

现在最重要的部分:如果我渲染没有GL.MultMatrix(ref matrix);部分的框架,使用GL.Translate()and GL.Rotate(),它可以工作(第二个屏幕截图)。但是,如果我不使用这两种方法,而是使用 将建模矩阵直接传递给 OpenGL GL.MultMatrix(),它会画出一些奇怪的东西(第一个屏幕截图)。

它看起来如何 它应该是什么样子

你能帮我解释一下问题出在哪里吗?为什么它可以使用平移和旋转方法工作,而不是用视图矩阵乘以建模矩阵?