0
我想用C++编写一个程序,用OpenGL读取文件中的数据,然后缩放绘制数据。从一个文件读取绘图点,然后缩放
该文件中的数据是设置为这样:
0.017453293\tab 2.01623406\par 0.087266463\tab 2.056771249\par 0.191986218\tab 2.045176705\par 0.27925268\tab 1.971733548\par
与\tab
标志着x坐标和\par
标志着y坐标。
我写的代码似乎没有工作。
#include "stdafx.h"
#include <stdlib.h>
#define _USE_MATH_DEFINES
#include <math.h>
#include "glut.h"
#include <iostream>
#include <string>
#include <fstream>
int _tmain(int argc, char **argv) {
void myInit(void);
void myDisplay(void);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("CMPS389 HW2");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
}
void myInit(void) {
glClearColor(0.0, 0.0, 0.0, 0.0);
glColor3f(1.0, 1.0, 1.0);
glPointSize(4.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
void myDisplay(void) {
glClear(GL_COLOR_BUFFER_BIT);
std::string words = "";
float locX;
float locY;
std::ifstream fileN("curveData.txt");
while(fileN != NULL) {
fileN>>words;
if (words == "\par") {
fileN>>locX;
}
if (words == "\tab") {
fileN>>locY;
glBegin(GL_LINES);
glVertex2f(locX*300, locY*300);
glEnd();
}
glFlush();
}
}
你是什么意思“似乎没有工作”?不工作如何?错误的结果?崩溃?让独角兽出现? – Bart 2013-04-22 04:56:40
它可能整天坐在沙发上看电视。无论如何,从你的代码中删除所有GL的东西,你不需要它来演示读取输入文件的问题。对于单行,一次读取浮点数,字符串,浮点数和字符串。检查流状态是否成功以检测例如EOF。然后,验证两个字符串是否是期望的值,并最终处理这两个坐标。 – 2013-04-22 05:06:08
它不绘制我给它的任何数据。我不知道这是因为我读取数据的方式是错误的,或者我的缩放比例是错误的,并且在窗口外绘制点。 – Deafsilver 2013-04-22 05:36:51