访问/读取值时浮点损坏Cout 打印

问题描述

所以,我目前正在处理一个 OpenGL C++ 项目,在该项目中我尝试加载我自己制作的自定义格式,唯一的问题是单个 cout 语句可能会毁了整件事。


理解问题所需的所有代码在这里

    for (int i = vertpos; i<vertpos+vertsize; i++) {
        vertices[i] = stof(contents[i]);
    }

代码将从文本文件内容 = 文件信息)解析的字符串转换为顶点浮点数组(或 GLfloat,同样的事情发生)。

Vertpos 是顶点信息开始的位置(所以在标题之后),vertsize 是移动到我的元素表之前的信息大小。 一切都按预期工作,这是正在渲染的模型的图片


请记住该程序不完整,因此由于未正确设置 RGB 值和 UV 值(程序用于确定纹理放置的其他一些值),模型具有奇怪的形状和顶点着色):

Picture of broken model working as intended


现在,让我们尝试添加一个小字功能,以便我可以看到值:

    for (int i = vertpos; i<vertpos+vertsize; i++) {
        vertices[i] = stof(contents[i]);
        cout << vertices[i] << flush;
    }

Picture of broken model working as intended with cout << vertices[i] << flush;

一切正常OK!。虽然我想分隔所有内容,但让我们尝试添加冒号分隔符:

    for (int i = vertpos; i<vertpos+vertsize; i++) {
        vertices[i] = stof(contents[i]);
        cout << vertices[i] << ":separatorstring,anyseparatorgivesthesameresult::::" << flush;
    }

Broken Model acting,well,broken (not supposed to)


这似乎触发了随机间隔,在我写这篇文章的时候,一旦我改变了代码,什么都没有发生,但是随后篡改了打印元素的代码(元素表之间的连接),它又发生了。

我很难在网上找到有相同经历的人,这很奇怪。 似乎只是,发生了。


图片(如 1 和 2)之间的任何不一致都是由于旋转模型造成的,我尝试在它旋转的确切时间拍摄图片,并查看它们相同的值。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)