徐郯 2023-02-21 04:40 采纳率: 100%
浏览 46
已结题

gl_PointCoord始终是0


fshader_src = """
        #version 330 core
        void main() { 
            //gl_PointCoord是内置变量,表示顶点坐标 gl_PointCoord的最大值是(1.0,1.0)
            //gl_FragColor 也是内置变量,表示顶点坐标对应的像素的颜色值
            //计算顶点坐标到指定点(0.5,0.5)之间的距离,
            float r = distance(gl_PointCoord, vec2(0.5, 0.5));
            //根据距离设置片元
            
            if(r < 0.5){
                // 方形区域片元距离几何中心半径小于0.5,像素颜色设置红色
                gl_FragColor = vec4(1.0,0.0,0.0,1.0);
            }else {
                // 方形区域距离几何中心半径大于等于0.5的片元剪裁舍弃掉:
                discard;
            }
        } 
    """

你好,我在python里面尝试编写着色器来显示点,但是却发现gl_PointCoord的值始终是0,0,我查询了好久也没有发现问题在哪,希望您可以帮帮我。

  • 写回答

3条回答 默认 最新

  • 天元浪子 Python领域优质创作者 2023-02-21 05:25
    关注

    看起来这段GLSL代码并没有问题。你是如何确定片元纹理始终不变的呢?渲染管线在渲染片元时针对每个片元都有一个不同的gl_PointCoord,除非顶点只有1个片元————没有开启点精灵(PointSprite)模式,或者视窗缩小到很小的情况下,才会出现这种情况。我猜你的问题是没有开启点精灵模式,或者忘记设置点的size了吧?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 已采纳回答 2月21日
  • 创建了问题 2月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部