2011-12-29 3 views
4

질문 : 어떻게 GLSL을 사용하여 OpenGL을에 포인트를 렌더링합니까?포인트는 OpenGL에서 렌더링 및 GLSL


Info : 나는 파이썬으로 중력 시뮬레이션을하고 렌더링을하기 위해 블렌더를 사용했습니다. 모양은 this입니다. 운동으로 나는 그것을 openGL과 openCL로 이식하고 있습니다. 사실 openCL에서 이미 작동하고 있습니다. 내가 openCL에서 일하는 공정한 시간을 보냈을 때부터 결과를 볼 수 없으면 이것이 옳은지 알기가 어렵다는 것을 깨달았습니다. 그래서 저는 OpenGL을 가지고 놀기 시작했습니다. 나는 위키 책에 대한 openGL GLSL 튜토리얼을 따라 갔지만, 매우 유익했다.하지만 포인트 나 파티클은 다루지 않았다.

내가 시작하는 위치에 대한 손실에 있어요. 대부분의 튜토리얼은 OpenGL 기본 프로그램을위한 것입니다. 나는 GLSL을 사용하여 그것을하고 싶다. 나는이 모든 것에 여전히 아주 새롭기 때문에 만약 대답이 내 코 바로 아래에 있다면 나의 잠재 된 우스개 소리를 용서해주십시오. 내가 찾고있는 것은 어떻게 서로 조화를 이루는 점 주위에 후광을 만드는가입니다. 프래그먼트 셰이더에서 이것을 수행하는 방법에 대한 대략적인 아이디어가 있지만, 필자가 알고있는 한, 내 포인트에 의해 생성 된 다각형으로 둘러싸인 픽셀 만 잡을 수 있습니다. 나는 이것 주위에 방법이있을 것이라고 확신합니다, 거기에있을 수는 없을 것입니다. 그러나 제 초창기에는 제가 우둔합니다. 어떤 사람들이 나에게 어떤 방향을 제시 할 수 있습니까? 감사. 표시되어야하고 다음 gl_src_alpha gl_one 및 "할로"

+0

는 내가 제대로 문제를 이해 absoultely 모르겠어요. 내가 아는 바로는 각 포인트 주위에 후광을 그리는 법을 묻습니다. 전형적으로 추가 형상을 생성하거나 그 일을하는 방법에 후광으로 질감 또는 렌더링 최초의 후광없이의 전체 이미지에 posprocessing 않습니다되어있다 (당신의 점을 중심으로 쿼드, 지오메트리 쉐이더 가능한 경우에 의해 발생 될 수 있습니다) 두 번째 단계 (예 : 점 주위의 흐림). 표준 블렌딩 작업으로 살 수있는 한 첫 번째 옵션을 사용하는 것이 좋습니다. 덕분에 더 쉽고 빠를 것입니다. 바로 – Grizzly

+0

입니다. 나는이 간단한 아이디어가 나에게 일어나지 않았을 정도로 이것에 관해서 아직도 새다. 나는 현재 후 처리가 어떻게 작동하는지 실제로 모른다. 나는 그 개념을 이해하지만, 어디서 시작해야할지 모르겠습니다. 그러나 쿼드 아이디어는 간단하고 직선적으로 들립니다. – Narcolapser

답변

7

, 다음에 조각 쉐이더를 사용하거나 일반적인 방법으로 텍스처 매핑, 또는를 생성 할로 그라디언트 절차 적.

GL_POINTS 모드에서 렌더링 할 때 버텍스 쉐이더에서 gl_PointSize을 설정하여 입자 크기를 설정하십시오. vec2 변수 gl_PointCoord은 조각 셰이더에서 조각의 좌표를 제공합니다.

편집 : GL_PROGRAM_POINT_SIZE이 활성화 된 경우 gl_PointSize에만 적용됩니다 설정. 또는 모든 점에 동일한 크기를 설정하려면 glPointSize을 사용하십시오. 또한 OpenGL 3.2 (코어)의 경우 GL_POINT_SPRITE 플래그가 제거되어 효과적으로 항상 켜져 있습니다.

+0

몇 가지 예를 참조 할 수 있습니다. 나는 GLSL을 사용하지 않는 것들만 찾고있다. 감사. – Narcolapser

+0

나는 제대로 작동하지는 않지만 당신의 대답을 답으로 표시했습니다. 그러나 나는 지금 당장 올바른 길에 있다고 생각합니다. 감사. – Narcolapser

+0

사실, 나는 실제로 어떤 예제도 찾을 수 없었다. 내가 알기로는 그것이 작동 될 때까지 주위에서 놀고있는 man 페이지에서 얻었습니다. 내가 어디에 있는지에 대해 – derkyjadex

0

단순히 (GL_POINT_SPRITE 사용) 포인트 스프라이트 블렌딩 기능을 사용을 그린다. 블렌딩은 "후광"에 대한 책임을 져야하므로 해당 주제에 대한 더 많은 정보를 찾아보십시오. 또한 깊이를 비활성화해야합니다. 여기

일부 그것에 대해 링크입니다 : 당신이 사용할 수 GL_POINT_SPRITEGL_POINTS로 입자를 렌더링하는 것입니다 원하는 것을 생각 http://content.gpwiki.org/index.php/OpenGL:Tutorials:Tutorial_Framework:Particles