我正在学习OpenGL NeHe制作。当我来阅读第13课位图字体时,我遇到了一个问题。我使用glut编写我的代码。而我的PC系统是Windows7.I在Microsoft Visual Studio 2008上运行我的代码,但没有任何错误,但没有出现在窗口中。我不知道什么是错的。什么可能会导致这个问题普遍?我错过了一些设置?

这是我的代码:

#pragma comment(lib,"GLAUX.LIB")

#include

#include

#include

#include

#include

#include

HDC hDC = NULL;

GLuint base;//the first display list we create

GLfloat cnt1,cnt2;//move on the screen or set color

GLvoid buildFont() // Build Our Bitmap Font

{

HFONT font; // Windows Font ID

HFONT oldfont; // Used For Good House Keeping

base = glGenLists(96); // Storage For 96 Characters

font = CreateFont(

-24, // Height Of Font

0, // Width Of Font

0, // Angle Of Escapement

0, // Orientation Angle

FW_BOLD, // Font Weight

FALSE, // Italic

FALSE, // Underline

FALSE, // Strikeout

ANSI_CHARSET, // Character Set Identifier

OUT_TT_PRECIS, // Output Precision

CLIP_DEFAULT_PRECIS, // Clipping Precision

ANTIALIASED_QUALITY, // Output Quality

FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch

"Times New Roman"); // Font Name

oldfont = (HFONT)SelectObject(hDC, font); // Selects The Font We Want

wglUseFontBitmaps(hDC, 32, 96, base); // Builds 96 Characters Starting At Character 32

SelectObject(hDC, oldfont); // Selects The Font We Want

DeleteObject(font); // Delete The Font

}

void killFont()

{

glDeleteLists(base,96);

}

void glPrint(const char *fmt, ...) // Custom GL "Print" Routine

{

char text[256]; // Holds Our String

va_list ap; // Pointer To List Of Arguments

if (fmt == NULL) // If There's No Text

{

printf("the string to print is NULL!\n");

return; // Do Nothing

}

va_start(ap, fmt); // Parses The String For Variables

vsprintf(text, fmt, ap); // And Converts Symbols To Actual Numbers

va_end(ap); // Results Are Stored In Text

glPushAttrib(GL_LIST_BIT); // Pushes The Display List Bits

glListBase(base - 32); // Sets The Base Character to 32

glCallLists(strlen(text), GL_UNSIGNED_BYTE, text); // Draws The Display List Text

glPopAttrib(); // Pops The Display List Bits

}

int init(GLvoid) // All Setup For OpenGL Goes Here

{

glShadeModel(GL_SMOOTH); // Enable Smooth Shading

glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background

glClearDepth(1.0f); // Depth Buffer Setup

glEnable(GL_DEPTH_TEST); // Enables Depth Testing

glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations

buildFont(); // Build The Font

return TRUE; // Initialization Went OK

}

void display() // Here's Where We Do All The Drawing

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer

glLoadIdentity(); // Reset The Current Modelview Matrix

glTranslatef(0.0f,0.0f,-1.0f); // Move One Unit Into The Screen

// Pulsing Colors Based On Text Position

glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),1.0f-0.5f*float(cos(cnt1+cnt2)));

// Position The Text On The Screen

glRasterPos2f(-0.45f+0.05f*float(cos(cnt1)), 0.32f*float(sin(cnt2)));

glPrint("Active OpenGL Text With NeHe - %7.2f", cnt1); // Print GL Text To The Screen

glutSwapBuffers();// Everything Went OK

}

void spinDisplay()

{

cnt1 += 0.051f;

cnt2 += 0.005f;

printf("cnt1: %f\n",cnt1);

printf("cnt2: %f\n",cnt2);

}

void reshape(int w,int h)

{

if (0 == h)

h = 1;

glViewport(0,0,(GLsizei)w,(GLsizei)h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(60.0f,(GLfloat)w / (GLfloat)h,1,100);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

int main(int argc,char** argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

glutInitWindowSize(600,600);

glutInitWindowPosition(100,100);

glutCreateWindow("Bitmap Fonts");

init();

glutDisplayFunc(display);

glutReshapeFunc(reshape);

glutIdleFunc(spinDisplay);

//glutKeyboardFunc(keyboard);

glutMainLoop();

killFont();

return 0;

}这是Visual Studio 2008的结果:

opengl绘制位图字体c语言源代码,使用OpenGL位图字体将文本放到屏幕上相关推荐

  1. opengl绘制位图字体c语言源代码,SFML中的位图字体(OpenGL)

    我正在用pySFML编写一个简单的位图字体渲染器,我想问是否有更好更快的方法来解决这个问题.在 我使用VertexArray并为字符串中的每个字符创建一个四元组.每个四边形都应用了适当的纹理坐标.在 ...

  2. C语言【将一个文本文件中的全部信息显示到屏幕上】

    #include <stdio.h> #include <stdlib.h>int main() {FILE *fp;char ch;if((fp=fopen("C: ...

  3. 计算机图形学作业( 七):利用 OpenGL 绘制 Bezier 贝塞尔曲线

    计算机图形学作业( 七):利用 OpenGL 绘制 Bezier 贝塞尔曲线 Bezier 曲线原理 OpenGL 实现思路 捕获鼠标点击时的坐标 根据顶点画出连续的线段 根据顶点画出 Bezier ...

  4. #翻译#将像素绘制到屏幕上

    2019独角兽企业重金招聘Python工程师标准>>> 一个像素是怎么映射到屏幕上去的?有许多种方式将一些事物映射到显示屏,他们需要不同的框架和许多功能和方法的结合体.这里我们走马观 ...

  5. IOS UIView 01-View开始深入 绘制像素到屏幕上

    前言 一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这里我们大概的看一下屏幕之后发生的事情.当你想要弄清楚什么时候.怎么去查明并 ...

  6. 图像绘制到屏幕上的原理。

    转载文章: 文章原地址:http://objccn.io/issue-3-1/ 一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这 ...

  7. 将一个像素绘制到屏幕上

    一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这里我们大概的看一下屏幕之后发生的事情.当你想要弄清楚什么时候.怎么去查明并解决问 ...

  8. iOS-将像素绘制到屏幕上

    今天把WordPress搭建好了,想用Django搭建的,还是没能实现,把之前翻译的一篇文章拿出来校对了一下,欢迎评阅. ##########我是正文########## 一个像素是怎样绘制到屏幕上去 ...

  9. C++ Opengl 绘制字体源码

    C++ Opengl 绘制字体源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1,三方 ...

最新文章

  1. python集合用法详解(创建、添加(add()、update())、删除(remove()、discard()、pop())、查找(in、not in))
  2. 技术14期:关于深度学习中耳熟能详的Embedding
  3. 【干货】最高级的运营,就是用科学的方法做艺术
  4. view技术简单了解
  5. VS中的路径宏:OutDir、ProjectDir、SolutionDir等各种路径的说明
  6. 让未备案的网站先飙起来
  7. MFC非模态对话框实例
  8. 我三年开发经验,从字节跳动抖音离职后,看看这篇文章吧!
  9. 1到100的偶数之和是多少_新射雕群侠传之铁血丹心手游新侠客独孤求败全渠道上线 新玩法桃花岛开启...
  10. java中String.split()的注意事项
  11. 6.4 SQL Server 加密
  12. 记录下返回list给前端 遇到 $ref:$.data.*** 问题
  13. 筛选出c语言成绩前五名的记录,c语言课程论文设计成绩记录簿.doc
  14. Servlet运行原理
  15. 一个用于创建JSON接口的网站 http://myjson.com/api
  16. SQL Server2008 附加数据库时出错
  17. tp6 验证码不显示问题
  18. photoshop之CameraRaw
  19. 换个角度看英语语法,会不会简单些?
  20. 如何做一个不被喷的产品经理?

热门文章

  1. 机器学习基石06:泛化理论(Theory of Generalization)
  2. Python中ArcPy实现Excel时序数据读取、反距离加权IDW插值与批量掩膜
  3. 磁带储存拥有的4大优势
  4. 一张图片怎么旋转90度。利用ps
  5. 双网口以太网IO模块的优势
  6. struts2中常用Result总结
  7. list_for_each_entry解析
  8. 微信网页授权之取消授权
  9. matlab毕业设计工作日志通用,毕业论文日志100篇通用_毕业论文日志100篇_万能工作日志100篇...
  10. 815计算机考研科目,2019年“815-计算机专业基础综合”考试大纲