我有一个包含顶点和法线的二进制文件,用于在 opengl 中制作人体图形。图形由小三角形组成。二进制文件中的数字(浮点数)的顺序是,三角形第一个顶点的 X、Y、Z,然后是它的法线(x,y,z),类似地,另外两个这样的集合构成一个三角形.(因此二进制文件中每18组浮点数组成一个三角形)而二进制文件包含数千个这样的三角形。我用c ++编写了一个windows形式的opengl代码,用于显示图形,下面是渲染函数。我忽略了法线,只使用顶点
void OpenGL::RenderScene()
{
size_t file_size;
ifstream file;
file.open("male_16_do`enter code here`wn.bin",ios::binary|ios::in);
if(!file){
cout<<"Couldnt find the file"<<endl;
}
file.seekg(0,ios::end);
file_size=file.tellg();
file_size/=(sizeof(float));
file.seekg(0,ios::beg);
std::vector<float> data(file_size);
file.read(reinterpret_cast<char*>(&data[0]),file_size*sizeof(float));
for(size_t i=0;i<file_size;i++){
//cout<<fixed<<setprecision(3)<<data[i]<<endl;
}
vector<float>::iterator iter;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(1.5f,1.0f,0.0f);
for(iter=data.begin();iter!=data.end();iter++){
glBegin(GL_TRIANGLE_STRIP);
int i=0;
glColor3f(1,0.0f,0.0f);
glVertex3f( data[i], data[i+1], data[i+2]);
glColor3f(1,0.0f,0.0f);
glVertex3f(data[i+6],data[i+7], data[i+8]);
glColor3f(1,0.0f,0.0f);
glVertex3f( data[i+12],data[i+13], data[i+14]);
glEnd();
i=i+18;
}
SwapBuffers(m_hDC);
}
代码似乎是正确的,但是在渲染时窗口中没有显示任何内容,有人可以建议我这里可能有什么问题吗?视口设置为匹配窗口的宽度和高度。