Ifstream 不适用于 OpenGL/freeglut
Ifstream doesn't work with OpenGL/freeglut
如果在OpenGL/freeglut中尝试使用ifstream,程序将崩溃。我的代码:
#include <fstream>
#include <windows.h>
#include <GL/freeglut.h>
double x, y;
std::ifstream read("coordinates.txt");
void display() {
glBegin(GL_LINE_STRIP);
while (read >> x) //Crashes here
{
read >> y;
glVertex2d(x, y);
}
glEnd();
glFlush();
}
void key(unsigned char mychar, int x, int y) {
if (mychar == 27) {
exit(0);
}
}
void initialize()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-27, 27, -27, 27);
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowSize(1920, 1080);
glutInitWindowPosition(0, 0);
glutCreateWindow("Lorenz Attractor");
initialize();
glutDisplayFunc(display);
glutKeyboardFunc(key);
glColor3d(0, 0, 1);
glutFullScreen();
glutMainLoopEvent();
Sleep(60000);
}
coordinates.txt:
1.1 1.03
2.5 2
3 5.3
我甚至不需要包括免费供过于求,我查看了一个以前运行良好的旧项目,现在它也崩溃了。使用代码::块与MinGW。为什么会发生这种情况?谢谢
display
将被调用多次。每当需要重新绘制显示时,就会调用它,例如当窗口进入视图时,将另一个窗口移到其顶部,调整窗口大小等。
display
读取文件。好吧,在它第一次读取文件后,文件将为空。毕竟,您在全局变量中打开了该文件(仅供参考:never这样做),并一直读取,直到文件为空。
绘图时不要读取文件。将文件读取到数据结构中(例如vector<float>
)。在渲染循环之前执行此操作。然后,使用数据结构进行绘制。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 从 Freeglut/Opengl 2.1 项目中获取返回值
- C++TinyThread和带有FreeGLUT的OpenGL
- 带有OpenGL(freeglut)的SDL在调用glutBitmapCharacter时崩溃
- 编译简单的静态OpenGL 4.0程序,使用MinGW,freeglut和glew
- C++ OpenGL (freeglut)
- 无法编译任何opengl/freeglut/glut源代码
- FreeGlut OpenGL 上下文版本
- Ifstream 不适用于 OpenGL/freeglut
- 在Windows7下使用C++和OpenGL/Freeglut的NetBeans
- 在OpenGL中使用freeglut链接错误
- OpenGL (freeglut)文件的放置会影响不同机器上的开发吗?
- 使用freeglut-glew-openGL进行设置
- OpenGL:无法使用freeGLUT执行渲染?C++