在OpenGL和GLSL中进行点渲染

Nar*_*ser 4 opengl glsl

问题:如何使用GLSL在openGL中渲染点?


信息:前段时间我在python中进行了重力模拟,并使用了blender进行渲染.它看起来像这样.作为练习,我将其移植到openGL和openCL.我想,我实际上已经在openCL中工作了.直到我花了相当多的时间在openCL工作,才意识到很难知道这是否正确而无法看到结果.所以我开始玩openGL.我在wikibooks上关注了openGL GLSL教程,内容非常丰富,但它没有涵盖点或粒子.

我不知道从哪里开始.我找到的大多数教程都是针对openGL默认程序的.我想用GLSL来做.我仍然对这一切都很陌生,所以请原谅我的潜在愚蠢,如果答案就在我的鼻子底下.我正在寻找的是如何在相互融合的点周围制作光晕.我对如何在片段着色器中执行此操作有一个大致的想法,但据我所知,我只能抓取由我的点创建的多边形所包围的像素.我确信有一种方法可以解决这个问题,但如果不这样做会很疯狂,但我的新生儿中的我是无能为力的.有人可以给我一些方向吗?谢谢.

der*_*dex 7

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

GL_POINTS模式下渲染时,gl_PointSize在顶点着色器中设置以设置粒子的大小.该vec2变量gl_PointCoord将在片段着色器中为您提供片段的坐标.

编辑:设置gl_PointSizeGL_PROGRAM_POINT_SIZE在启用后才会生效.或者,只需使用glPointSize为所有点设置相同的大小.此外,从OpenGL 3.2(核心)开始,该GL_POINT_SPRITE标志已被删除,并且始终有效.