C++在屏幕上未显示文字
问题描述:
我正在尝试使用此代码在我的屏幕上打印文字。C++在屏幕上未显示文字
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitWindowSize(640, 480);
int WindowHandle = glutCreateWindow("Maze");
if (WindowHandle < 1) {
fprintf(stderr, "ERROR: Could not create a new rendering window.\n");
exit(EXIT_FAILURE);
}
//Initialize OpenGL
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//Initialize the viewport
glViewport(0, 0, 640, 480);
//Initialize OpenGL projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, 640.0f, 480.0f, 0.0f, -2.0f, 2.0f);
//Clear back buffer
glClear(GL_COLOR_BUFFER_BIT);
//Create font
GLuint textureName;
glGenTextures(1, &textureName);
PixelPerfectGLFont font;
try {
font.Create("fonts\\quad20.glf", textureName);
}
catch(GLFontError::InvalidFile) {
cerr << "Cannot load font\n";
abort();
}
//Draw some stuff
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glColor3f(1.0f, 0.0f, 0.0f);
try {
font.Begin();
font.TextOut("hello world", 50, 50, 0);
}
catch(GLFontError::InvalidFont) {
cerr << "Trying to draw with an uninitialized font\n";
abort();
}
glDisable(GL_TEXTURE_2D);
glLoadIdentity();
glutMainLoop();
return 0;
}
将此代码放在一个main.cpp的文件,它会运行(假设你有接头右)
上的代码的顶部我有
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glew.h>
#include <GL/glut.h>
#endif
#include "glfont.h"
使用glfont.h你在上面添加using namespace std;
(否则它会抛出编译错误)
所以......当我运行只显示一个白色的屏幕,没有文字显示的应用程序。
有人可以告诉我什么我做错了吗?
p.s. glfont可以在这里找到http://students.cs.byu.edu/~bfish/glfontdl.php
答
有人可以告诉我什么我做错了吗?
一切。
这不是你如何与GLUT呈现在所有。你应该注册回调,当GLUT准备好显示内容时会被调用。你永远不会交换缓冲区或任何东西,所以你不会看到东西。等等。
看看任何你可以找到GLUT的例子,你会发现它看起来不像这样。
你开始与文本渲染玩耍前,你应该先了解规则的渲染。