2011-12-29 118 views
4

问题:如何在使用GLSL的OpenGL中渲染点?在OpenGL和GLSL中的点渲染


信息:后来我做了一个重力模拟python和使用搅拌机做渲染。它看起来像this。作为一个练习,我将它移植到openGL和openCL。我想,我已经在openCL中工作了。直到我花了一段时间在openCL上工作,我意识到很难知道这是否正确,而不能看到结果。所以我开始玩OpenGL。我遵循wikibooks上的openGL GLSL教程,内容非常丰富,但没有涵盖点或粒子。

我不知道从哪里开始。我找到的大多数教程都是针对openGL默认程序的。我想用GLSL来做。我对这一切还是很陌生的,所以如果我的鼻子下面的答案是正确的,请原谅我的潜在白痴。我正在寻找的是如何在混合到彼此的点上制造晕眩。我对如何在片段着色器中做这个粗略的想法,但据我所知,我只能抓住由我的点创建的多边形所包围的像素。我确信有一种解决办法,如果没有,我会觉得很疯狂,但是在我的新手中,我是无能为力的。有人能给我一些方向吗?谢谢。

+0

我不是绝对确定我正确理解你的问题。根据我的理解,你问如何围绕你的每一点提出一个光环。通常有这样做的方法,要么产生额外的几何图形(以你的点为中心的四边形,如果可用,可以由几何着色器生成),其被纹理化为光晕或者首先无光晕地呈现,并且对完整图像进行后处理第二步(例如模糊点)。只要你可以接受标准的混合操作,我会建议使用第一个选项,因为更容易,也许更快 – Grizzly 2011-12-29 16:32:58

+0

正确。我仍然对此感到陌生,所以我没有想到这些简单的想法。我目前不知道后处理的工作原理。我理解这个概念,但我不确定从哪里开始。但是这个四分之一的想法听起来简单而直截了当。 – Narcolapser 2011-12-29 16:36:28

回答

7

我想你想要的是使粒子GL_POINTSGL_POINT_SPRITE启用,然后用你的片段着色器要么以通常的方式将纹理映射,或生成晕程序。

当您在GL_POINTS模式下渲染时,请在顶点着色器中设置gl_PointSize以设置粒子的大小。 vec2变量gl_PointCoord会给你片段着色器中片段的坐标。

编辑:设置gl_PointSize只有在启用GL_PROGRAM_POINT_SIZE后才会生效。或者,只需使用glPointSize即可为所有点设置相同的尺寸。此外,从OpenGL 3.2(核心)开始,GL_POINT_SPRITE标志已被删除,并且始终处于开启状态。

+0

你可能会引用一些例子。我只找到不使用GLSL的东西。谢谢。 – Narcolapser 2011-12-30 16:59:29

+0

我把你的标记作为答案,即使它不是很有效,但我认为我现在正处在正确的轨道上。谢谢。 – Narcolapser 2011-12-30 21:56:21

+0

事情是,我自己实在找不到任何例子。我知道我从手册中获得的东西,直到它奏效。 – derkyjadex 2011-12-31 17:49:34