OpenGL选择区域

OpenGL选择区域,opengl,textures,lwjgl,projection,Opengl,Textures,Lwjgl,Projection,我目前正在使用LWJGL,但如果你有OpenGL的解决方案,我也可以使用它 现在,我正在尝试将一个选择区域应用到一个可以用鼠标移动的平面上(就像上面糟糕的图画一样)。我试着把它平放在飞机上,这样它就可以越过任何障碍物。我考虑过投影纹理,但我不知道如何实现它。这是解决问题的好方法还是有更好的选择 实施选择区域的最佳方式是什么 备选方案,利弊 编辑:这将移动到另一个纹理上,如果这会产生差异的话 当您已经知道世界空间中的交点时,有一个相对简单的解决方案不需要投影纹理: 在片段着色器中,计算交点和当前片

我目前正在使用LWJGL,但如果你有OpenGL的解决方案,我也可以使用它

现在,我正在尝试将一个选择区域应用到一个可以用鼠标移动的平面上(就像上面糟糕的图画一样)。我试着把它平放在飞机上,这样它就可以越过任何障碍物。我考虑过投影纹理,但我不知道如何实现它。这是解决问题的好方法还是有更好的选择

  • 实施选择区域的最佳方式是什么
  • 备选方案,利弊
    编辑:这将移动到另一个纹理上,如果这会产生差异的话

    当您已经知道世界空间中的交点时,有一个相对简单的解决方案不需要投影纹理:

    在片段着色器中,计算交点和当前片段之间的世界空间距离。当两者之间的距离小于所需的圆半径时,应绘制选择颜色。否则只绘制法线平面

    float dist = length(current_ws - intersection_ws);
    
    if (dist < circle_radius)
        //Draw overlay
    else
        //Draw plane normal
    
    float dist=长度(当前距离-交点距离);
    if(距离<圆半径)
    //绘制覆盖图
    其他的
    //绘制平面法线
    
    您好,欢迎来到SO。您的第2点似乎偏离了主题,因为它需要一个非现场资源。对于问题:如果在世界空间中有与平面的交点,则可以在片段着色器中绘制圆,而无需任何纹理投影。只需计算当前碎片到交点的距离。如果它比圆的大小更接近,那么给它上色,否则只显示平面。这对我来说很有意义。解释得很好。