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() 给出链接错误 c++