问题标签 [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# - 使用 WPF 和 SharpGL 的 C# Revit 扩展
我正在尝试在 WPF 窗口中使用 SharpGL 创建 Revit 扩展,但无法使 FPS 超过 10。没有 Revit,WPF 和 SharpGL 可以顺利协同工作。这是简单的代码
Revit Execute 运行 WPF 的 MainWindow,它在 10FPS 时什么也不画!
有没有办法让它变得平滑,或者我应该停止使用 SharpGL 并使用 WPF?
c# - SharpGL 中的着色
我有一个球体,我想给它上色并在其上添加灯光效果,所以当我对它进行光照时,球体的原始颜色消失了,取而代之的是照明灯的颜色。
我不知道是什么问题,帮帮我。
这是我的代码:
c# - SharpGL(C# 中的 OpenGL)太阳系 - 相机位置计算错误
我目前正在学习 OpenGL,我正在尝试编写类似于教程中的简单太阳能系统应用程序,但由于某种原因,相机行为真的很奇怪,我不确定是什么原因造成的。我想让我的相机看着太阳,但我得到的只是行星的一些非常奇怪的角度,或者什么都没有,这甚至可能不是纯粹的相机问题。有人能告诉我我到底做错了什么吗?我会很感激一些代码。如果有人愿意提供帮助并且更愿意检查应用程序而不是在这里阅读代码,请在下面添加链接。
这里的相机将尽可能接近教程(FPS),但我也得到了拖动/滚动系统而不是这个。
行星.cs:
Sun.cs
星星.cs
SolarSystem.cs(基本上是上面所有内容的集合,枚举不是必需的,我留下它们是因为它们将来可能有用)
API(包括指针位置翻译,因为只有这样我才能使光标居中,它会被拖动相机系统删除):
扩展.cs
主窗口.cs
链接到整个应用程序:
https://www.dropbox.com/sh/uhfyeayxn8l7q9y/AAA8tFda5-ZLAjTUzJcwKUm6a?dl=0
更新 1:
我已将 Look() 函数更改为:
现在它可以工作了。
现在我可以看到我的应用程序由于某种原因正在加载不正确的纹理。我想那是因为我编写的方法 LoadTextures() 使用的是 Gl.GenTextures(1, texture)。(sharpgl 中没有 Gen(Single)Texture 方法,否则我完全错了)。
更新 2:
所以基本上我的大部分纹理都不起作用,因为它们不是 2 的幂,但从我读过的内容来看,它们不再需要了。所以我现在的问题是:如何强制sharpGL显示NPOT纹理?
更新 3:
结果我可以像这样加载它们,但是,它们是颠倒的:)。
更新 4:
我可以翻转纹理以正确显示它,但问题是为什么会这样?
更新 5:
虽然更新 4 的问题仍然存在,但我得到了最后一个问题:如何重新计算相机,使其不仅限于向上/向下查看 -90/90 度?
opengl - 使用 OpenGL 进行局部绘图
我们可以在 OpenGL 中部分重绘框架吗?
例如:如果我的框架中有线条和多边形,多边形不会改变(相同的尺寸、颜色等),但线条会有一些细微的变化。所以我只想再次渲染线条而不是多边形。
有没有办法做到这一点?如果可能的话,我的应用程序的性能将会发生巨大的变化。
c# - DrawArrays 调用后不绘制顶点数据
在 C# 中使用其他 OpenGL 框架后开始使用 SharpGL 我决定从最简单的示例开始,以确保我理解 SharpGL 的任何语法更改/优点。
所以我试图渲染一个不应该太难的单一纯色三角形。
我有两个顶点缓冲区,一个存储三角形的点,另一个存储每个点的颜色。这些是这样构建的(点一个是相同的,除了它使用点数组):
然后使用正确的属性指针设置这些并启用:
但是现在当我使用调用绘制时:
我没有在屏幕上看到任何东西。没有例外,但背景只是空白。
自然地,我认为我的着色器存在编译问题,幸运的是 SharpGL 为我提供了一种简单的检查方法,并且顶点和片段着色器都显示为正确编译和链接。
谁能明白为什么这段代码不能正确显示任何对象,它基本上和我以前使用的代码相同。
完整来源:
顶点着色器:
片段着色器:
c# - WPF中sharpGL的不良性能
我遵循了可以显示旋转块的 SharpGL 教程。最初,这仅在其上绘制了默认颜色gl.Color(r, g, b)
。成功后,我尝试使用 uv 贴图对立方体进行纹理处理。
当我全屏运行应用程序时,只为立方体着色(sharpGL 组件覆盖应用程序的整个内部),我得到 70~80 fps 仅用于显示彩色立方体。当我启用OpenGL.GL_TEXTURE_2D
并在单个立方体上绘制纹理时,我得到 8~9 fps。
每当加载位图以用作纹理时,它都会存储在内存中。这种帧率下降仅在我启用OpenGL.GL_TEXTURE_2D
并调用gl.TexCoord(c1, c2)
所有坐标后发生。实际上移动对象gl.Rotate(angle, x, y, z)
并不会显着影响性能。
为该方法提供的数据包括GetBlockUv
和CubeCoordinates
是静态浮点数组。
SharpGL 是否应该表现不佳(即显示单个立方体)还是有其他原因?我做错了什么会影响性能吗?应用纹理应该会影响这样的性能吗?
主要抽奖事件发生在一个块中:
OpenGL 在别处初始化
中间人GameRunner
现在所做的就是调用DrawBlock
例程。
我主要想知道的是对我可以期待的 openGL / sharpGL 的性能以及是否有更好的替代品的一些见解。我想继续使用围绕游戏的 WPF 架构,但如果 WPF 中的 openGL 更多地是一种噱头,那可能不是最好的做法。
c# - SharpGL 2D 纹理问题
我正在尝试使用 SharpGL 包装器使用运行时生成的纹理来纹理三角形。
我无法弄清楚为什么三角形仍然没有纹理。
gl.Error() 放入绘图循环返回 0,这意味着 GL_NO_ERROR。
opengl - 无法将颜色从顶点着色器传递到片段着色器
我是 OpenGL 的新手,并使用 SharpGL 来研究它,它是简单的 C# 绑定到 OpenGL 函数。我正在尝试使用最简单的顶点和片段着色器。当片段着色器自己生成输出时,一切都很好,但是当它尝试使用来自顶点着色器的数据时,只有黑屏。着色器已成功编译并链接到程序。OpenGL 没有返回任何错误。经过大量文章、示例和教程后,我仍然不知道为什么会发生这种情况。这是顶点着色器。
片段着色器:
这是初始化代码:
最后,这是每次迭代中发生的事情:
更新 1。这是传递给缓冲区的数据。
UPD 2这是着色器编译代码
UPD 3 以下是编译器的调用方式
opengl - SharpGL 和 RenderBuffers
我正在尝试将路径跟踪器移植到 GLSL,为此我需要修改着色器示例程序以使用纹理作为帧缓冲区而不是后缓冲区。
这是顶点片段
这是设置代码
这是运行时代码
但是当我检查从 GetTexImage 返回的像素时,它们是黑色的。当我在另一个传输着色器中绑定这个纹理时,它们仍然是黑色的。我怀疑我在渲染缓冲区的设置代码中遗漏了一些东西,如果您有任何建议,我将不胜感激!