OPENGL文字显示

OpengGL教程(一)---OpenGL环境的配置(GLFW3,GLAD) OpenGL环境配置 阅读详情

感谢《学OPENGL编3D游戏》教学课件。这个课件在GAMERES上可以得到。其中有一种显示文字的方法。主要是利用了glBitmap。思路如下:先创建一个临时DC,将文字写到这个DC上。文字背景色为黑色,颜色为白色。这样就得到了文字对应的黑白图,最后把这个黑白图绘制到指定区域。通过在glBitmap之前,用glColor3f指定颜色,最后显示出有颜色的文字。此外,坐标转换也很巧妙:

 glTranslatef(-(420-x)/800,(260-y)/600,-1.0f);

这个公式,文字的坐标轴原点位于窗口左上角,横坐标向右,纵坐标向下。

附:课件中的源码。

void CGLFont:: settext (float x,float y,CString str,HFONT Font,float r,float g,float b)
{
 glLoadIdentity();
 glPushAttrib(GL_CURRENT_BIT);
 glDisable(GL_TEXTURE_2D);   
 glDisable(GL_LIGHTING);     
 
 //指定颜色
 glColor3f(r,g,b);            
 //坐标转换,移动
 glTranslatef(-(420-x)/800,(260-y)/600,-1.0f);
 //输出文字
 Printftext (0,0, str,Font);  
 
 glEnable(GL_LIGHTING);        
 glEnable(GL_TEXTURE_2D);         
 glPopAttrib();
}

void CGLFont:: Printftext (int x, int y, LPCTSTR lpszText,HFONT hFont)
{
 CBitmap bitmap;      
 BITMAP bm;                          
 SIZE size;                         
 
 HDC MDC = ::CreateCompatibleDC(0);
 SelectObject(MDC,hFont);   
 ::GetTextExtentPoint32(MDC,lpszText,strlen(lpszText),&size);
 
 bitmap.CreateBitmap(size.cx, size.cy, 1, 1, NULL);
 
 HBITMAP oldBmp=(HBITMAP)SelectObject(MDC,bitmap);
 
 SetBkColor  (MDC, RGB(0,     0,   0)); 
 SetTextColor(MDC, RGB(255, 255, 255)); 
 TextOut(MDC, 0, 0, lpszText, strlen(lpszText));
 
 bitmap.GetBitmap(&bm);    
 size.cx = (bm.bmWidth + 31) & (~31);  
 int bufsize =size.cy * size.cx; 
 
 struct {
  BITMAPINFOHEADER bih;
  RGBQUAD col[2];
    }bic;                                
 BITMAPINFO *binf = (BITMAPINFO *)&bic;      
 binf->bmiHeader.biSize     = sizeof(binf->bmiHeader);
 binf->bmiHeader.biWidth    = bm.bmWidth; 
 binf->bmiHeader.biHeight   = bm.bmHeight; 
 binf->bmiHeader.biPlanes   = 1;        
 binf->bmiHeader.biBitCount = 1;            
 binf->bmiHeader.biCompression = BI_RGB;    
 binf->bmiHeader.biSizeImage   = bufsize;
 UCHAR* Bits = new UCHAR[bufsize];   
 ::GetDIBits(MDC,bitmap,0,bm.bmHeight,Bits,binf,DIB_RGB_COLORS);
                                         
 glPixelStorei(GL_UNPACK_ALIGNMENT ,1);
 glRasterPos2i(x,y);                 
 glBitmap(size.cx,size.cy,0,0,0,0,Bits);
 
 delete Bits;                           
 SelectObject(MDC, oldBmp);          
 ::DeleteDC(MDC);                 
}

C# OpenGl 文字显示 1. 显示列表 index = GL.glGenLists(96); GL.glListBase(index); var hFont = GL.CreateFont( 40, 0, 0, 0, GL.FW_DONTCARE, 0, 0, 0, GL.DEFAULT_CHARSET, G 阅读详情

相关推荐

OpenGL 调用FreeType2.0显示文字

本程序是使用FreeType2.0库, 在OpenGL中显示文字, 若字库文件支持unicode, 则可显示汉字等东亚字符, 本程序是本人为嵌入式系统所写的一个原型程序,若加上着色器,便可很容易移植到OPenGL ES2.0

想要装逼,全靠3D

OpenGL- 创建实时3D图像的编程接口走向3D三维(3D)表示一个正在描述或显示的物体具有3个维度:宽度、高度和深度。例如,放在书桌上的一张画是一个二维物体,因为它没有可以令人感受得到的深度。而旁边的药瓶却能感受到它是3D,因为它具备高度、深度、宽度。几个世纪以来,艺术家们已经知道如何让一幅画有立体感并且具有真实的深度。通过颜料在二维画布上所创作的作品,它其实本质上画的是一个二维物体。类似,计...

weixin_34025051的博客 541

Lumerical Python API实战指南(一)——从数据优化到自动化工作流

本文是Lumerical Python API实战指南,旨在帮助用户从繁琐的手动仿真操作转向智能自动化工作流。文章详细介绍了API环境的零基础搭建、核心操作(会话管理、命令执行与数据交换),并通过参数扫描与自动化分析流水线的实战案例,展示了如何利用Python脚本实现从数据优化到自动化仿真的全过程,显著提升光子设计效率。

xxx12的博客 567

【OpenGL】显示字符

很多时候,我们需要在创建的窗口上显示一些提示信息。这个时候我们可用的一种常用方法就是加载一幅包含常用字符的bmp图像作为纹理来实现。 下面介绍具体步骤: (1)加载bmp图像作为纹理。 采用的bmp图像Font.bmp: 采用了glaux库。 具体实现参考:加载BMP图像为纹理 (2)创建显示列表 需要注意的是图像Font.bmp大小是256*256,包含两种格式的字符,...

mmdev 576

基于live555实现一个rtsp客户端程序

本文介绍了基于live555流媒体库实现的RTSP客户端程序,能够通过RTSP地址获取H.264/H.265裸码流或TS流数据并存入本地文件。详细阐述了使用CLion搭建工程的代码架构和CMake配置,重点分析了TS流解析模块的实现,包括TS包结构解析、PES包提取和ES裸流获取的完整流程。文章提供了TS/PES/ES三种数据包的协议说明,并给出了从TS流中提取视频帧的具体方法,最后附有工程代码下载链接。该方案实现了RTSP流媒体接收、解析和存储的完整功能链。

kk821521286的博客 789

从TL431光耦到集成隔离器:3种反激电源反馈方案全对比,你的项目到底该选哪个?

本文深入对比了反激电源设计中TL431光耦、集成隔离器和原边反馈三种主流反馈方案的优缺点,帮助开发者在电源设计中选择最适合的方案。从精度、成本、隔离等级等多维度分析,为反激式(Flyback)拓扑的应用提供实用选型指南。

weixin_30536513的博客 399

opengl显示文字

在目前的项目中因为有涉及到OpenGL文字输出之类的操作,于是做了一个总结,并把一个库进行了改进,在这里贴出来,希望大家能够在将来的编程中省去一些写细节代码的时间,同时也是抛砖引玉。 首先,要注明的是唐明理先生的开源库还有OpenGL资料是相当宝贵的,也是我见过的许多资料中最好的,如果初学者有了一定的应用水平,看他的这些东西,提高会是飞速的,而且会顺利过渡到框架开发的思维。我们做游戏与图像编程,

编程小生的专栏 1万+

Excel VBA+Adobe Acrobat Pro PDF发票识别全流程(附避坑指南)

本文详细介绍了如何利用Excel VBA与Adobe Acrobat Pro的API接口,构建一套企业级PDF发票智能识别与处理系统。内容涵盖从环境配置、核心文本提取原理、数据解析清洗到工程化脚本设计的全流程,并针对密码区干扰、不征税发票等常见问题提供避坑指南,旨在帮助财务人员和开发者实现高效、精准的财务数据处理自动化。

weixin_29207439的博客 348

OpenGL总结14-字符与文字输出

字符基础 字符图元基础(根据计算机图形学进行简单的总结): 字样:一组字符的完整设计风格 字体:一组按照特定尺寸和格式的目标字符样式 衬线字体:易于阅读 无衬线字体:易于识别 单一宽度字体:每个字符大小是相同的,不受字符本身的大小影响 比例字体:每个字符的大小根据自身的大小决定 字体的表示有两种方式(OpenGL本身不提供字符支持,通过调用window的接口实现): 位图字体:与光栅化类似(也叫光栅化字体),在网格上用一个一个像素块拼出一个字符形状,位图字体比较简单,显示时方便,但是位图字体对于缩放等

windxgz的博客 1416

别再瞎改注册表了!实测Win10/Win11远程桌面60帧的正确姿势(附ToDesk对比)

本文深入解析Windows远程桌面60帧优化的科学方法,揭示常见误区并提供实测有效的解决方案。从版本差异到硬件加速,再到第三方工具对比(如ToDesk),帮助用户避开无效的注册表修改,实现流畅的远程桌面体验。

weixin_33738555的博客 341

别光看教程了!手把手带你用STM32F103C8T6最小系统板点亮第一个LED(附完整电路图)

本文详细介绍了如何使用STM32F103C8T6最小系统板点亮第一个LED,从硬件连接到软件开发环境搭建,再到编写和下载程序,手把手教你完成STM32入门的第一步。适合初学者快速上手STM32开发,附完整电路图和代码示例。

weixin_28678831的博客 194

OpenGL显示文字

阅读这篇文章前,可以先看一下这个文字显示系列的其他文章,了解一些字符编码,字体相关的知识:https://blog.youkuaiyun.com/wlk1229/article/category/9008450 显示文字 OpenGL提供的是图形API,本身并不提供文字处理方面的接口,如果想要显示文字就需要先将文字转化成图片,然后渲染图片。 Char Map Char Map是最简单的方式,首先...

Wlk1229 1万+

PCL 提取两片点云的非重叠部分【2025最新版】

PCL 提取两片点云的非重叠部分。博客长期更新,本文最近一次更新时间为:2025年9月1日。

点云侠的博客 36万+

OpenGL: 文字显示

感谢《学OPENGL编3D游戏》教学课件。这个课件在GAMERES上可以得到。其中有一种显示文字的方法。主要是利用了glBitmap。思路如下:先创建一个临时DC,将文字写到这个DC上。文字背景色为黑色,颜色为白色。这样就得到了文字对应的黑白图,最后把这个黑白图绘制到指定区域。通过在glBitmap之前,用glColor3f指定颜色,最后显示出有颜色的文字。此外,坐标转换也很巧妙: glTrans

Augusdi的专栏 3374

AI Agent开发第82课-手把手教你把paddleocr-vl做成mcp使其在DIFY里运行

本文详解如何将国产顶尖多模态 OCR 模型 PaddleOCR-VL 封装为标准 MCP(Model Calling Protocol)服务,并通过自研的 HTTP-based MCP Client 接入 Dify 1.10,实现 AI Agent 在对话中自动识别并调用 OCR 能力。该方案已在某头部保险公司真实业务流程中落地,使用了当前最先进的“Agentic AI 原生”设计思想。

打造全国最全的AI Agent开发知识领域的博客 1625

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OpenGL 下的文字显示

    一直以来,OpenGL状态下的文字显示都是一个问题,本文使用嵌套显示列表的方式进行OpenGL状态下的字符串的显示。     有以下几点需要注意:     1:本程序显示按照给定的高度和文字的位置显示某一种字体的文字,其中一些字体的参数定义在OpenGLText内部给定,可以随意将它抽出来。如果将代码用于实际应用中,建议文字的文字间距自己设定,也可以随意添加文字的倾斜角、旋转角度、

bluebohe的专栏 5346

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

转载:OpenGL显示文字

转载:OpenGL显示文字 2010年07月03日   本课我们来谈谈如何显示文字。   OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。   各种流行的图形操作系统,例如Windows系统和Linux系统,都提供了一些功能,以便能够在OpenGL程序中方便的显示文字。   最常见的方法就是,我们...

zdw624ma 375

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OpenGL文字显示

线贴一个简单可用的opengl文字显示调用函数 opengl文字显示大致三步: 1,创建字体 2,输出打印 3,删除字体 1,创建字体的函数: /* * BuildFont * 创建位图字体 */ GLvoid BuildFont(GLvoid) { HFONT font; // 字体句柄 HFONT oldfont; base

lixiaoguang20的博客 1481

OpenGL 在Windows系统中显示文字

本课我们来谈谈如何显示文字。OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。各种流行的图形操作系统,例如Windows系统和Linux系统,都提供了一些功能,以便能够在OpenGL程序中方便的显示文字。最常见的方法就是,我们给出一个字符,给出一个显示列表编号,然后操作系统由把绘制这个字符的OpenGL命令装到指定

痞子龙3D编程 2338

opengl文字显示(一)

线贴一个简单可用的opengl文字显示调用函数 opengl文字显示大致三步: 1,创建字体 2,输出打印 3,删除字体 1,创建字体的函数: /* * BuildFont * 创建位图字体 */ GLvoid BuildFont(GLvoid) { HFONT font; // 字体句柄 HFONT oldfont; bas

shanzhizi的专栏 8494

OpenGL显示文字--显示字符

OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。 各种流行的图形操作系统,例如Windows系统和Linux系统,都提供了一些功能,以便能够在OpenGL程序中方便的显示文字。 最常见的方法就是,我们给出一个字符,给出一个显示列表编号,然后操作系统由把绘制这个字符的OpenGL命令装到指定的显示列表中。当需要

成膜的博客 2万+

opengl文字显示(二)

(一)显示英文 OpenGL并没有直接提供显示文字的功能,并且,opengl也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。 各种流行的图形操作系统,例如Windows系统和Linux系统,都提供了一些功能,以便能够在OpenGL程序中方便的显示文字。 最常见的方法就是,我们给出一个字符,给出一个显示列表编号,然后操作系统由把绘制这个字符的OpenGL命令装到指定的

shanzhizi的专栏 2907
上一篇: 指环王OL荣获IGN2008年度编辑选择奖
下一篇: OpenGL显示图片
programking
博客等级 码龄23年 450粉丝 140原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值