glutBitmapCharacter() 文本没有出现在屏幕上?

Posted

技术标签:

【中文标题】glutBitmapCharacter() 文本没有出现在屏幕上?【英文标题】:glutBitmapCharacter() text not appearing on screen? 【发布时间】:2019-01-07 17:15:57 【问题描述】:
#include "stdafx.h"
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include "glut.h"

int winWidth = 700;
int winHeight = 600;

void init() 
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);   
    glLoadIdentity();
    gluOrtho2D(0.0, winWidth, 0.0, winHeight);


void renderSpacedBitmapString(float x, float y, void *font, char *string) 
    char *c;
    int x1 = x;
    for (c = string; *c != '\0'; c++) 
        glRasterPos2f(x1, y);
        glutBitmapCharacter(font, *c);
        x1 = x1 + glutBitmapWidth(font, *c);
    


void draw_text() 
    glColor3f(255.0, 0, 0.0); /* red color */
    char buf[100] =  0 ;
    sprintf_s(buf, "DO YOU WANT TO GO TO SPACE?");
    renderSpacedBitmapString(15, 600, GLUT_BITMAP_HELVETICA_18, buf);


void display(void) 
    glClear(GL_COLOR_BUFFER_BIT);
    draw_text();
    glFlush();


int main(int argc, char** argv) 
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(winWidth, winHeight);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Drawn Text");
    init();
    glutDisplayFunc(display);
    glutMainLoop();
    return 0; 

我遇到了无法让文本出现在屏幕上的问题,但是当我将 gluOrtho2D 代码更改为 gluOrtho2D(-200.0, 800, -200.0, 800); 它开始工作,但我想保持 gluOrtho2D 代码相同和上面一样,我不想改变它。

【问题讨论】:

【参考方案1】:

y = 600 略高于您的 gluOrtho2D() 剪辑音量。将字符串向下一点(将 580 传递给 renderSpacedBitmapString()y 参数有效)或增加窗口高度(620 有效)。

【讨论】:

有没有办法将文本向下移动,而不是增加窗口大小? @Muddy 是的,正如答案renderSpacedBitmapString(15, 580, GLUT_BITMAP_HELVETICA_18, buf);中所建议的那样

以上是关于glutBitmapCharacter() 文本没有出现在屏幕上?的主要内容,如果未能解决你的问题,请参考以下文章

glutBitmapCharacter 文本位置错误

glutBitmapCharacter() 给出链接错误 c++

如何在 3D 对象(如球体)上绘制文本

使用 glutBitmapCharacter() 屏幕闪烁?

如何在 QOpenGLTexture 上渲染文本?

使用 OpenGL,如何正确使用 gluOrtho2D 和默认投影?