问题标签 [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.
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/
c# - 在 SharpGL C# 中为 TexImage3D 函数设置值
使用 OpenGL 的 C++ 代码:
上面的 C++ 代码工作正常。&LUT[0]
被接受,因为它是类型const GLvoid * data
使用 SharpGL 的 C# 代码:
我的问题是,在 SharpGL&LUT[0]
中不接受,说明它只接受 IntPtr 类型的消息。无论如何我可以解决这个问题吗?
c# - SharpGL 未在按钮单击时呈现
我在 winform 上测试 SharpGL 示例,它在 openGLDraw 事件上呈现三角形。但是当我试图用按钮渲染它时,它不起作用。它不应该在 openGLDraw 事件之外呈现吗?以下是代码:
c# - SharpGL 屏幕/光标坐标到模型视图
使用 SharpGL,是否可以将屏幕光标位置转换回模型视图位置(即创建光线投射功能)?
我一直在使用的示例类似于以下内容:
使用 SharpGL 以及上面示例中演示的方法,是否可以实现光线投射/鼠标选择?或者我是否需要深入研究 OpenGL 的工作原理(手动管理矩阵等)来实现这一点?
编辑:为了澄清,我试图检索 2D 光标位置的 3D 解释。也许通过透视(w)缩放等。
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 -> AutoToolboxPopulate
并true
重建解决方案,但它不起作用。
try_3:在“选择项目”窗口中等待了一段时间,单击浏览按钮并导航到SharpGLWinForms.dll
文件packages
夹中,单击确定但仅GLColourPiker
已添加到工具箱中。(我想要OpenGLControl
和其他控制这个库)
try_4:重复try_3几次,最终出现了适当的控件。但是为什么我要重复这一步来得到结果。我做错了什么?
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
值
所以他们显然不在彼此后面。
投影矩阵中是否存在错误?
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 代码:
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:
wpf - 任何人都可以通过鼠标单击来解释光线投射的这个小偏移吗?
我在 WPF 窗口中使用 SharpGL,并使用自定义着色器导航和绘制测量点云,以减少基于距离的点大小。一切运行良好,但我最近尝试添加通过鼠标单击选择最接近射线投射的点的功能。我在此链接中使用了步骤 0 到 4:http: //antongerdelan.net/opengl/raycasting.html
我面临的问题是光线似乎非常轻微地向相机矢量移动,导致我错过了我点击的点,只刮掉了它们的内边缘。我也在从相机位置开始绘制光线,所以最初光线应该在移动相机之前显示为一个点(向下看轨迹线),但我可以看到它清楚地绘制到屏幕中间。这是一个屏幕截图,显示了当我单击它的中心时射线错过了点的位置:
这是我用来计算光线开始和结束坐标的代码:
输出如下所示:
我单击的屏幕中心越远,偏移量似乎就越大。非常感谢我能得到诊断的任何帮助,我花了两天时间阅读文章并摆弄代码无济于事。