【问题标题】:glutBitmapCharacter() text not appearing on screen?glutBitmapCharacter() 文本没有出现在屏幕上?
【发布时间】: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 代码相同和上面一样,我不想改变它。

【问题讨论】:

    标签: c++ opengl glut


    【解决方案1】:

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

    【讨论】:

    • 有没有办法将文本向下移动,而不是增加窗口大小?
    • @Muddy 是的,正如答案renderSpacedBitmapString(15, 580, GLUT_BITMAP_HELVETICA_18, buf);中所建议的那样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多