看板 MacDev 關於我們 聯絡資訊
應該要在後面被擋住的東西 卻還是會因為後繪製而蓋住先畫的東西 以下是程式碼 #import <Cocoa/Cocoa.h> #include <OpenGL/gl.h> #include <OpenGL/glu.h> #include <GLUT/glut.h> #define WIDTH 800 #define HEIGHT 800 //static GLfloat angle = 0.0f; // 太陽、地球和月亮 // 假設每個月都是30天 // 一年12個月,共是360天 static int day = 262; // day的變化:從0到359 void myDisplay(void) { glEnable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT); glClear(GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(75, 1, 1, 400000000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1); // 繪製红色的“太陽” glColor3f(1.0f, 0.0f, 0.0f); glutSolidSphere(69600000, 50, 50); // 繪製藍色的“地球” glColor3f(0.0f, 0.0f, 1.0f); glRotatef(day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(150000000, 0.0f, 0.0f); glutSolidSphere(15945000, 50, 50); // 繪製黃色的“月亮” glColor3f(1.0f, 1.0f, 0.0f); glRotatef(day/30.0*360.0 - day/360.0*360.0, 0.0f, 0.0f, -1.0f); glTranslatef(38000000, 0.0f, 0.0f); glutSolidSphere(4345000, 50, 50); glFlush(); } int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); //glDepthMask(GL_TRUE); //這行要是不取消會無法通過 Debug glutInitWindowPosition(200, 200); glutInitWindowSize(WIDTH, HEIGHT); glutCreateWindow("OpenGL Solar"); glutDisplayFunc(&myDisplay); glutMainLoop(); return 0; } 感謝您看完本篇 !! -- 想你的時候 不一定能告訴你 如果不告訴你 也能會意 那我們就是有 真正的默契 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.165.195.92
bill42362:對了 我是用 Xcode 編譯的... 02/07 10:34