OpenGL:如何裁剪 2D 区域以避免将带有 GlutBitmap 的文本打印出该区域?

Posted

技术标签:

【中文标题】OpenGL:如何裁剪 2D 区域以避免将带有 GlutBitmap 的文本打印出该区域?【英文标题】:OpenGL: how to clip a 2D area to avoid text with GlutBitmap to be printed out of this area? 【发布时间】:2015-09-30 20:21:12 【问题描述】:

如何在我的应用程序中定义一些可以打印文本的区域,而不会溢出?

int printText(char *myChar, int color, double x, double y, double z)

    call_color(color);
    int end_of_char=strlen(myChar);
    glRasterPos3d(x,y,-1);
    for(int i=0;i<end_of_char;i++)
    
        glutBitmapCharacter(GLUT_BITMAP_8_BY_13,myChar[i]);
    
    return(0);

样本:

void window_function()

    // printing things before on all screen
    // define clipping aera
    char tem[64];
    sprintf(tem,"mouse x: %.4f mouse y: %.4f",mouse_ox,mouse_oy);
    printText(tem,COL_LIGHT_GREY,x+0.005,y-0.085,1.0);
    //re opening the clipping aera to the complete screen
    //printing other stuff    

【问题讨论】:

你可以使用stencil buffer。 或者您可以使用glViewport 限制可绘制区域。但请注意,您还必须调整投影矩阵。 好的,非常感谢 处理 Windows 自制创建的最佳方法是什么,我需要在 x 和 y 的角度内移动? 【参考方案1】:

glScissor() + glEnable(GL_SCISSOR_TEST).

【讨论】:

以上是关于OpenGL:如何裁剪 2D 区域以避免将带有 GlutBitmap 的文本打印出该区域?的主要内容,如果未能解决你的问题,请参考以下文章

opengl算法学习--- 直线裁剪算法

opengl算法学习--- 直线裁剪算法

[OpenGL](翻译+补充)投影矩阵的推导

[OpenGL](翻译+补充)投影矩阵的推导

在 cocos2d 中使用 opengl-es 进行圆形裁剪

使用 lwjgl/opengl 进行简单裁剪