如何在 C++ 中的 OpenGL 中的矩形上显示文本?
Posted
技术标签:
【中文标题】如何在 C++ 中的 OpenGL 中的矩形上显示文本?【英文标题】:How to display text over rectangle in OpenGL in C++? 【发布时间】:2017-02-18 18:01:19 【问题描述】:我的代码看起来像这样对此代码的修改将不胜感激。我试过了,只有矩形没有出现文字。
#include <GL/glut.h>
#include<bits/stdc++.h>
using namespace std;
void init2D(float r, float g, float b)
glClearColor(r, g, b, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 600.0, 0.0, 600.0);
void RenderToDisplay()
int l,lenghOfQuote, i;
char str[80];
strcpy(str,"Have courage and be kind");
cout<<str;
lenghOfQuote = (int)strlen(str);
for (i = 0; i < lenghOfQuote; i++)
glColor3f(1.0, 0.0, 0.0);
glutStrokeCharacter(GLUT_STROKE_ROMAN, str[i]);
void display(void)
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glVertex3f(150.0f, 200.0f, 0.0f);
glColor3f(0.940, 0.37, 0.47);
glVertex3f(450.0f, 200.0f, 0.0f);
glColor3f(0.940, 0.37, 0.47);
glVertex3f(450.0f, 400.0f, 0.0f);
glColor3f(0.69, 0.27, 0.57);
glVertex3f(150.0f, 400.0f, 0.0f);
glColor3f(0.69, 0.27, 0.57);
glEnd();
RenderToDisplay();
glFlush();
int main(int argc, char *argv[])
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(0,0);
glLineWidth(3);
glutCreateWindow("Assignment Q2");
init2D(0.0, 0.0, 0.0);
glutDisplayFunc(display);
glutMainLoop();
如果您需要问其他任何问题,可以告诉我这些 cmets。我使用代码块来测试这个程序。
【问题讨论】:
Using GLUT to simply print text 可能会有所帮助。 @KaushikNP 我还是做不到,我在 OpenGL 中有点菜鸟,如果你能在程序中提出建议就好了。 @АлексейНеудачин 我没明白。如果您想在第二个问题中发送拉取请求,请在 github.com/heysadboy/Advanced-Graphics-and-Animation 处发送请求。谢谢。 【参考方案1】:好吧,一天后我明白了,我太笨了:')
#ifdef __APPLE_CC__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
void init2D(float r, float g, float b)
glClearColor(r, g, b, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 600.0, 0.0, 600.0);
void rectangle()
glBegin(GL_POLYGON);
glColor3f(0.4,0,0.8);
glVertex3f(150.0f, 200.0f, 0.0f);
glColor3f(0.4,0,0.8);
glVertex3f(450.0f, 200.0f, 0.0f);
glColor3f(0.6,0,0.6);
glVertex3f(450.0f, 400.0f, 0.0f);
glColor3f(0.6,0,0.6);
glVertex3f(150.0f, 400.0f, 0.0f);
glEnd();
void text()
char menu[80];
strcpy(menu,"Have courage and be kind");
int len;
len = strlen(menu);
glColor3f(1,1,1);
glMatrixMode( GL_PROJECTION );
glPushMatrix();
glLoadIdentity();
gluOrtho2D( 0, 600, 0, 600 );
glMatrixMode( GL_MODELVIEW );
glPushMatrix();
glLoadIdentity();
glRasterPos2i(190, 300);
for ( int i = 0; i < len; ++i )
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, menu[i]);
glPopMatrix();
glMatrixMode( GL_PROJECTION );
glPopMatrix();
glMatrixMode( GL_MODELVIEW );
void display()
glClear(GL_COLOR_BUFFER_BIT);
rectangle();
text();
glFlush();
int main(int argc, char** argv)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(0, 0);
glutInitWindowSize(600, 600);
glutCreateWindow("Assignment 1 Question 2");
init2D(0.0f, 0.0f, 0.0f);
glutDisplayFunc(display);
glutMainLoop();
【讨论】:
以上是关于如何在 C++ 中的 OpenGL 中的矩形上显示文本?的主要内容,如果未能解决你的问题,请参考以下文章
c++:如何使用 sdl 将位图加载到 opengl 中的多维数据集中?