[問題] OpenGL 深度緩衝

看板MacDev作者 (酒池肉林夜夜生科)時間17年前 (2008/02/07 10:33), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
應該要在後面被擋住的東西 卻還是會因為後繪製而蓋住先畫的東西 以下是程式碼 #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

02/07 10:34, , 1F
對了 我是用 Xcode 編譯的...
02/07 10:34, 1F
文章代碼(AID): #17gcuFgI (MacDev)
文章代碼(AID): #17gcuFgI (MacDev)