- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试增强 MoonLander 游戏程序 - 只是想更好地理解事物。
我想在燃油低于特定水平时添加警告,并且我希望该警告改变颜色。我的游戏循环以大约 30 帧/秒的速度运行。所以我创建了一个成员变量,它在特定帧数处“设置”一个 INT。我已经做了一些检查 - 我的帧计数器代码工作正常 - 我的 setWhichColour 函数也是如此。文本确实在屏幕上绘制 - 但它每次都以白色绘制...
下面是设置“colour”成员变量的代码
if (lander.getFuel() < 200)
{
incrementFrameCounter();
if (frameCounter % 15 == 0)
{
setWhichColour(0);
}
else if (frameCounter % 20 == 0)
{
setWhichColour(1);
}
else if (frameCounter % 50 == 0)
{
setWhichColour(2);
}
else
{}
drawText(Point(40, 40), "Warning: Fuel Below 200",getWhichColour());
}
这里是我用来在屏幕上绘制文本的 drawText 函数。 case 语句只是传递一个整数值来选择触发哪个 glColor3f 序列。 drawText 函数在每次游戏循环运行时运行一次。
void drawText(const Point & topLeft, const char * text, int iColour)
{
void *pFont = GLUT_BITMAP_HELVETICA_12;
// prepare to draw the text from the top-left corner
glRasterPos2f(topLeft.getX(), topLeft.getY());
glPushAttrib(GL_CURRENT_BIT); // <-- added this after finding another answer
switch (iColour)
{
case 0: // red
glColor3f(1.0 /* red % */, 0.0 /* green % */, 0.0 /* blue % */);
case 1: // green
glColor3f(0.0 /* red % */, 1.0 /* green % */, 0.0 /* blue % */);
case 2: //blue
glColor3f(0.0 /* red % */, 0.0 /* green % */, 1.0 /* blue % */);
default: //white
glColor3f(1.0 /* red % */, 1.0 /* green % */, 1.0 /* blue % */);
}
// loop through the text
for (const char *p = text; *p; p++)
glutBitmapCharacter(pFont, *p);
glPopAttrib(); // <-- added this after finding another answer
}
我发现这个答案似乎是相关的: How to Set text color in OpenGl
我在上面注意到我从那个答案中复制了代码,这似乎应该有所帮助。
不幸的是 - 我的文字仍然是白色的。它根本不设置颜色。我怀疑我遗漏了一些基本的东西(可能很简单),但我只是没能看到什么。
任何人都可以确定我应该怎么做才能让文本以不同的颜色显示 - 老实说 - 在这一点上我什至很高兴它只是以白色以外的任何颜色显示,即使它没有改变...
最佳答案
设置颜色后调用glRasterPos
。
关于c++ - 设置 glutBitmapCharacter() 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54851483/
我正在尝试使用 OpenGL、FreeGlut 使用 glutBitmapCharacter() 进行简单的文本输出。我的问题是,我没有显示任何文字。三角形工作正常。我想问题不是 displayTex
#include "stdafx.h" #include #include #include #include "glut.h" int winWidth = 700; int winHeigh
我正在尝试在屏幕上绘制一个简单的字符串(覆盖)。 根据我在互联网上找到的内容,我是这样使用它的: void write(string text, int x, int y){ glRaster
我正在使用顶点和片段着色器,GLSL 版本 130。Ubuntu 12.04 LTS。着色器工作正常。照明被禁用。 glutBitmapCharacter() 可以正常绘制文本,但颜色无法预测。当我调
只是想知道是否有人可以帮助我使用以下代码来跟踪我的问题,即文本颜色设置不正确(它只是渲染背景中的任何颜色) void RenderText(int x, int y, const char *stri
我正在尝试增强 MoonLander 游戏程序 - 只是想更好地理解事物。 我想在燃油低于特定水平时添加警告,并且我希望该警告改变颜色。我的游戏循环以大约 30 帧/秒的速度运行。所以我创建了一个成员
当我尝试使用名为 drawText() 的函数绘制文本时,该函数运行顺利,但当它到达 glutBitmapCharacter(GLUT_BITMAP_9_BY_15, (int)text[i]); 时
我想做的是,当我绘制每个对象时,我检查它是否被标记,如果被标记,在对象附近写一些文本,使用 glRasterPos2f/i 在屏幕上设置位置,然后使用 glutBitmapCharacter . 对于
我想简单地在屏幕上写任何东西。绘制矩形很容易。我试图将文本字符串横向叠加在“书”上。看起来很简单,但是... 请注意,我尝试从这些论坛中获取建议,所以 glDisable(GL_DEPTH_TEST)
我正在开发一个 3D 应用程序,试图在屏幕上呈现一些文本。 但是如果文本超过 10 个字符,FPS 会下降到 2,这真的很烦人。 我的程序经常使用 glutPostRedisplay() 函数,这就是
我需要比 glutBitmapCharacter(font, text[i]) 更快的东西。它的性能下降了几次!我需要显示 fps、xyz 位置等,所以不是在 3D 中只显示 HUD。 目前我正在使用
我有一个在 SDL 下通过 freeglut 使用 OpenGL 的程序。 SDL/OpenGL初始化如下: // Initialize SDL SDL_Init(SDL_INIT_VIDEO); /
我是一名优秀的程序员,十分优秀!