c ++文本未在屏幕上显示

时间:2012-03-17 11:14:12

标签: c++ visual-studio-2010 opengl text

我正在尝试使用此代码将文字打印到屏幕上。

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

找到

1 个答案:

答案 0 :(得分:0)

  

有人可以告诉我,我做错了吗?

一切。

这不是你用GLUT渲染的方式。您应该注册在GLUT准备好显示内容时调用的回调。你永远不会交换缓冲区或任何东西,所以你不会看到东西。等等。

查看您可以找到的任何 GLUT示例,您会发现它看起来不像这样。

在开始使用文本渲染之前,首先应该了解常规渲染。