浮点值未返回正确值
Float is not returning correct value
只要快速提醒一下,我的代码可能会出现更多错误,因为我仍在学习如何正确发布问题。
我正在开发我的第一个程序,它是有目的的。我学习了许多教程,对编程有了基本的了解。
我使用的是VC++2012和供过于求openGL版本4.3.0
我的目标是输入一个与天气相对应的数字。然后根据数字播放不同的动画。一开始为了简化,我只是想改变背景颜色。
我发现这是用这个做的。
glClearColor(0.0, 0.0, 0.0, 0.0, 1.0);
这似乎在通过代码手动输入数字时起作用。然而,当我试图在不同的类中为每个RGB值分配一个浮点值时,得到的背景仍然是黑色的。
我的天气变化是在天气课上用案例完成的。
我看的大多数教程都说尽可能将变量保密,以防止以后出现问题。所以在screenRGB类中,我设置了设置和获取RGB颜色的函数。
我想这可能就是我的错误的来源。
当我运行这个程序时,我确定了我使用的浮点值是多少。
cout << screenrgb.getScreenRed() << endl;
这有助于隔离出一些出了问题的地方。返回的浮点值为-1.07374e+008。这看起来很奇怪
只有当我更换时
float getScreenBlue(void){return screenBlue;}
到。。。
float getScreenBlue(void){return 1.0;}
当窗户打开时,颜色发生了变化,这是可以理解的。这使我确信集合函数的编码不正确。
我觉得我可能只是错过了一件小事,或者可能是一件大事。据我所知,其余的似乎都奏效了。
这是我的完整代码,很抱歉,如果这个块太大而无法理解,如果需要的话,我可以尝试删除我知道不是问题的部分。
http://pastebin.com/1NhHkSN1
再次感谢,如果发布错误,请道歉。
本。
在init()
函数中,您声明screenRGB:的本地实例
void init(void)
{
screenRGB screenrgb; /// <-- local instance!
cout << screenrgb.getScreenRed() << endl;
glClearColor(screenrgb.getScreenRed(), screenrgb.getScreenGreen(), screenrgb.getScreenBlue(), 1.0);
cout << screenrgb.getScreenRed() << endl;
glShadeModel(GL_SMOOTH);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
}
此实例与您在Weather::changeWeather()
:中声明的实例是分开的
string changeWeather()
{
screenRGB screenrgb; /// <-- A completely different local instance!
这两个实例是未连接的,因为每个实例都是其自身函数的局部实例。此外,每次调用该函数时都会得到一个全新的本地实例。
您需要传递一个公共实例,可能是screenRGB &
或类似的实例,具体取决于您要做的整体工作。在调用Weather::changeWeather()
和渲染代码的某个外部作用域中声明该实例。
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- lower_bound()返回最后一个元素
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何取消对nullptr的屏蔽,返回正确的对象
- 奇怪的结构&GCC&clang(void*返回类型)
- 架构决策:返回std::future还是提供回调
- 从python中调用C++函数并获取返回值
- 矩阵向量乘法(cublasDgemv)返回零
- 为什么模板类中的对象不能返回值