问题标签 [sharpgl]

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 投票
1 回答
1025 浏览

c# - SharpGL FBO / VBO 绘制简单三角形不起作用

我试图在带有 SharpGL 的 OpenGL 中使用 FBO/VBO。用于此 WPF 应用程序。问题是,示例三角形不渲染。

使用以下代码添加组件:

以及渲染和初始化的代码:

而且我不确定我做错了什么?仅显示带有 FPS 和绘制时间统计信息的黑色窗口。请不要发送 C++/C tuts,因为已经尝试过(很多),并且在 C# 中有点不同。试图遵循这个 tut:http ://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/

0 投票
1 回答
185 浏览

c# - 在 SharpGL C# 中为 TexImage3D 函数设置值

使用 OpenGL 的 C++ 代码:

上面的 C++ 代码工作正常。&LUT[0]被接受,因为它是类型const GLvoid * data

使用 SharpGL 的 C# 代码:

我的问题是,在 SharpGL&LUT[0]中不接受,说明它只接受 IntPtr 类型的消息。无论如何我可以解决这个问题吗?

0 投票
1 回答
553 浏览

c# - SharpGL 未在按钮单击时呈现

我在 winform 上测试 SharpGL 示例,它在 openGLDraw 事件上呈现三角形。但是当我试图用按钮渲染它时,它不起作用。它不应该在 openGLDraw 事件之外呈现吗?以下是代码:

0 投票
2 回答
756 浏览

c# - SharpGL 屏幕/光标坐标到模型视图

使用 SharpGL,是否可以将屏幕光标位置转换回模型视图位置(即创建光线投射功能)?

我一直在使用的示例类似于以下内容:

使用 SharpGL 以及上面示例中演示的方法,是否可以实现光线投射/鼠标选择?或者我是否需要深入研究 OpenGL 的工作原理(手动管理矩阵等)来实现这一点?

编辑:为了澄清,我试图检索 2D 光标位置的 3D 解释。也许通过透视(w)缩放等。

0 投票
1 回答
810 浏览

winforms - SharpGL 控件不出现在工具箱中

我创建了新的 WinForm 项目并为 WinForms: 安装了 SharpGL 包Install-Package SharpGL.WinForms,但工具箱中没有出现相应的控件。

如何让它们出现?

注意:此示例https://github.com/dwmkerr/sharpgl/tree/master/source/SharpGL/Samples/WinForms 在工具箱中已经有 SharpGL 控件。

try_1:当我在工具箱上下文菜单中单击“选择项目...”时,“选择项目”窗口打开,但开始加载并挂起 Visual Studio。

try_2:我也尝试设置Options -> Windows Forms Designer -> AutoToolboxPopulatetrue重建解决方案,但它不起作用。

try_3:在“选择项目”窗口中等待了一段时间,单击浏览按钮并导航到SharpGLWinForms.dll文件packages夹中,单击确定但仅GLColourPiker已添加到工具箱中。(我想要OpenGLControl和其他控制这个库)

try_4:重复try_3几次,最终出现了适当的控件。但是为什么我要重复这一步来得到结果。我做错了什么?

0 投票
1 回答
251 浏览

opengl - 当lookAt移动时glLookAt移动相机位置 - 投影矩阵的作用?

简短版本:我正在使用带有透视投影矩阵的 glLookAt 视图矩阵,我想知道为什么 camLookAt 向量(我正在查看的点)的变化会导致相机位置的变化。

长版:我使用这里描述的代码来实现我自己的著名 glLookAt 函数:

这似乎工作得很好,除了一件奇怪的事情:当我保持凸轮的位置固定,但改变camLookAt变量时,似乎相机不仅移动了它的角度,而且还移动了它的位置。

为了证明这一点,我做了一个明确的计算:

  • 取世界点(0, 0, 0)(1, 0, 0)
  • camPosition = (-3, 0, 0)从和看他们camLookAt = (0, 0, 0)up = (0, 0, 1)所以我们正在查看原点,在正 x 轴的方向上。这是我得到的矩阵:
  • 由于两个点都位于 x 轴上,因此它们应该出现在我们相机上的同一个位置。一个点应该正好在另一个点的后面。这很好用,第一个点被映射到(0, 0, -3),第二个点被映射到(0, 0, -4).
  • 现在更改camLookAt(0, 3, 0),即将相机向左旋转 45 度。这是我得到的矩阵:
  • 由于我们不移动相机的位置,因此这些点应该仍然彼此落后。但是,情况并非如此,这两个点分别转换为(2.1213, 0, -2.1213)(2.8284, 0, -2.8284)。所以两个变换点的 (X,Y) 分量不匹配。

现在,到目前为止,我们只使用了欧几里得变换,所以还没有透视。但是,我正在使用这样的透视投影矩阵

即使应用了这个投影矩阵,这两个点也不会落在相同的 (X, Y) 坐标上,即屏幕上的相同像素上。

我错过了什么?这是 glLookAt 的预期行为,还是我使用/实现它错误?

编辑:投影矩阵应用于顶点着色器,就像这样:

EIDT 2:这是我当前场景的记录,作为澄清。唯一随着时间改变的是camLookAt向量。相机应该保持在相同的位置,但它似乎在移动:

在此处输入图像描述

编辑 3:按照@NicoSchertler 的建议,我只是在 CPU 上进行了所有计算。viewMatrix 乘法在上面完成,它分别得到(2.1213, 0, -2.1213)(2.8284, 0, -2.8284)。现在我应用投影矩阵(参见上文了解如何获取投影矩阵):

我得到以下向量

然后我将它们除以它们产生的w

所以他们显然不在彼此后面。

投影矩阵中是否存在错误?

0 投票
1 回答
525 浏览

c# - 为什么我不能在 C# 中使用 OpenGL 设置 Texture Wrap 参数?(SharpGL DLL)

我一直在构建一种方法来使用 SharpGL 在 WPF 应用程序中为数字地形模型的顶点着色(我是澳大利亚人)。我面临的问题是,我似乎无法使用附加到活动 OpenGL 实例的 TexParameter 方法将 GL_TEXTURE_WRAP_T 和 S 参数更改为 GL_REPEAT 以外的任何参数。

如果我无法将纹理环绕设置为 GL_CLAMP_TO_EDGE,那么在访问最低颜色时我会得到最高颜色的出血,除非我将纹理坐标偏移半个像素(这很笨重,但我知道它会起作用)。

窗口当前呈现如下:

当前错误结果

当它应该在中间三分之一处有彩虹,在上三分之一处有纯红色,在下三分之一处有蓝色。

我知道我正确使用了 TexParameter 方法,因为我可以成功操作同一纹理的 GL_TEXTURE_MIN_FILTER 和 GL_TEXTURE_MAG_FILTER 参数。我唯一能想到的是,需要在 OpenGL 实例中启用某些功能才能更改纹理包装参数。

我附上了整个 C# 测试代码和 WPF xaml 代码,以便能够重现问题。第 52 和 53 行是调用该方法的位置。我能得到的任何帮助将不胜感激。

这是 xaml 代码:

0 投票
0 回答
438 浏览

c# - 照明在 SharpGL 中不起作用

我在 SharpGL 中遇到了照明问题 - 我尝试了所有方法,结果仍然是灰色物体。我究竟做错了什么?我怎样才能让它工作?我想要一些阴影效果,随便什么。

在此处输入图像描述

这是我的代码:

0 投票
2 回答
384 浏览

c# - SharpGL.WPF gl.Color not working

I am using SharpGL.WPF for displaying graphs of several mathematical equations. However, the gl.Color() is not working for me.

Here is my draw method which I call in the OpenGLDraw event:

And here is my initialization code:

0 投票
0 回答
228 浏览

wpf - 任何人都可以通过鼠标单击来解释光线投射的这个小偏移吗?

我在 WPF 窗口中使用 SharpGL,并使用自定义着色器导航和绘制测量点云,以减少基于距离的点大小。一切运行良好,但我最近尝试添加通过鼠标单击选择最接近射线投射的点的功能。我在此链接中使用了步骤 0 到 4:http: //antongerdelan.net/opengl/raycasting.html

我面临的问题是光线似乎非常轻微地向相机矢量移动,导致我错过了我点击的点,只刮掉了它们的内边缘。我也在从相机位置开始绘制光线,所以最初光线应该在移动相机之前显示为一个点(向下看轨迹线),但我可以看到它清楚地绘制到屏幕中间。这是一个屏幕截图,显示了当我单击它的中心时射线错过了点的位置:

截屏

这是我用来计算光线开始和结束坐标的代码:

输出如下所示:

我单击的屏幕中心越远,偏移量似乎就越大。非常感谢我能得到诊断的任何帮助,我花了两天时间阅读文章并摆弄代码无济于事。