1

私が理解しているように、gl_PointCoordポイントをレンダリングするときに、OpenGL 3 のフラグメント シェーダーで常に使用できます。しかし、一方、GLSL 1.20 仕様では、「ポイント スプライトが有効になっている」場合にのみ使用できるとされています (これは、 への呼び出しの後であると想定していますglEnable(GL_POINT_SPRITE))。

これらの 2 つのステートメントがどのように競合し、GL_POINT_SPRITEOpenGL 3 で利用できないかを見て、gl_PointCoord実際に利用できるのはいつですか? それはディレクティブに依存しますか#version、または取得したGLプロファイルに依存しますか、それとも何ですか?

さらに、これは点の形状とどのように相互作用しますか? 私が理解している限りでは、MSAA がオフの場合は点が四角形としてレンダリングされ、MSAA がオンの場合は円としてレンダリングされます。が利用可能な場合GL_POINT_SPRITE、有効にすると常に正方形としてレンダリングされるように見えますが、OpenGL 3 でこれを適切に制御するにはどうすればよいでしょうか? 四角くしたい場合、ポイントレンダリング呼び出しの周りでマルチサンプリングを単にオフにすることになっていますか?

4

2 に答える 2

1

gl_PointCoordコアOpenGLのプリミティブに対して常に「使用可能」です (意味のある値で埋められます) 。GLSL 130 を提供しない互換性プロファイルまたは実装では、有効にする必要があります。GL_POINTGL_POINT_SPRITE

于 2013-09-22T05:02:58.080 に答える