ヘッダーファイルは別にあるのですが、STLデータを描画する際の処理ですが
画面が黒く塗りつぶされてしまいます。
明確におかしな点があればおしえてください
C++
1#include<iostream> 2#include<gl/glut.h> 3#include"stlreader.h" 4 5#define STL_FILE "C:\Users\owner\Desktop\nsx_concept_LOW.stl" 6 7void DRAW_XYZ(); 8void init(void); 9void keyboard(unsigned char key, int x, int y); 10 11 12 13Triangle *triangles; 14int num; 15STLreader stlreader; 16unsigned char key = NULL; 17 18 19int main(int argc, char **argv) 20{ 21 glutInit(&argc, argv); 22 /* ウィンドウの生成 */ 23 glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH); 24 glutInitWindowPosition(200, 50); 25 glutInitWindowSize(400, 400); 26 glutCreateWindow(argv[0]); 27 init(); 28 //glutReshapeFunc(resize); 29 //glutDisplayFunc(display); 30 glutKeyboardFunc(keyboard); 31 glutMainLoop(); 32 if (triangles) 33 delete[] triangles; 34 return 0; 35 36} 37 38 39void init() 40{ 41 glClearColor(0, 0, 0, 0); 42} 43 44void keyboard(unsigned char key, int x, int y) 45{ 46 switch (key) { 47 case '\33': 48 case 'q': 49 case 'Q': 50 exit(0); 51 52 case'r': 53 case'R': 54 55 if (triangles) 56 delete[] triangles; 57 58 if (!(num = STLreader::countTriangles(string(STL_FILE)))) 59 60 break; 61 62 63 triangles = new Triangle[num]; 64 65 stlreader.readASCIISTLFile(STL_FILE, triangles); 66 67 stlreader.readBinarySTLFile(STL_FILE, triangles); 68 69 70 71 glClear(GL_COLOR_BUFFER_BIT); 72 73 74 DRAW_XYZ(); 75 76 glBegin(GL_TRIANGLES); 77 78 glColor3f(1.0, 0.0, 1.0); 79 80 for (int i = 0; i < num; i++) 81 { 82 83 glNormal3dv(triangles[i].nornVec); 84 glVertex3dv(triangles[i].pnt1); 85 glVertex3dv(triangles[i].pnt2); 86 glVertex3dv(triangles[i].pnt3); 87 88 } 89 90 91 glEnd(); 92 glFlush(); 93 94 95 break; 96 default: 97 break; 98 } 99} 100 101 102void DRAW_XYZ() 103{ 104 glBegin(GL_LINES); 105 106 glColor3f(0, 1, 0);//x 107 glVertex2f(-100, 0); 108 glVertex2f(100, 0); 109 110 glColor3f(1, 0, 0);//y 111 glVertex2f(0, 0); 112 glVertex2f(0, 100); 113 114 glColor3f(0, 0, 1);//z 115 glVertex3f(0, 0, -100); 116 glVertex3f(0, 0, 100); 117 glEnd(); 118 119}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。