Bạn thấy điểm vì bạn đang vẽ điểm với glBegin(GL_POINTS)
. Thử thay thế bằng glBegin(GL_LINE_STRIP)
.
LƯU Ý: khi bạn nhìn thấy vòng tròn, bạn cũng chỉ vẽ các điểm, nhưng được vẽ đủ gần để xuất hiện dưới dạng vòng tròn được kết nối.
Ngoài ra, bạn có thể chưa thiết lập bộ đệm độ sâu để chấp nhận các giá trị trong phạm vi z = [-50, 310] mà bạn sử dụng. Các đối số này phải được cung cấp dưới dạng số zNear và zFar cắt máy bay trong số cuộc gọi gluPerspective
, glOrtho()
hoặc glFrustum()
của bạn.
LƯU Ý: điều này sẽ giải thích tại sao với giá trị z bạn chỉ thấy một vài điểm: các điểm khác được cắt bớt vì chúng nằm ngoài phạm vi z-buffer.
CẬP NHẬT SAU BẠN đã chỉ ra mã của bạn:
glOrtho(-100*aspectratio,100*aspectratio,-100,100,1,-1);
sẽ chỉ cho phép z-giá trị trong [-1, 1] phạm vi, đó là lý do tại sao chỉ có ba điểm với z = -1
, z = 0
và z = 1
sẽ rút ra (do đó 3 điểm).
Cuối cùng, bạn có thể đang xem hình xoắn ốc từ trên cùng, nhìn trực tiếp theo hướng của trục xoay. Nếu bạn không sử dụng phép chiếu phối cảnh (nhưng một phép chiếu đẳng động), hình xoắn ốc sẽ vẫn hiển thị dưới dạng hình tròn. Bạn có thể muốn thay đổi chế độ xem của mình với gluLookAt()
.
VÍ DỤ HÀNH LẬP QUAN ĐIỂM
Sau đây code được lấy từ các hướng dẫn OpenGL tuyệt vời bởi NeHe:
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix
// Calculate The Aspect Ratio Of The Window
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glLoadIdentity(); // Reset The Modelview Matrix
Sau đó, trong draw loop của bạn sẽ trông như thế này:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glLoadIdentity();
glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glVertex3f(0.0f, 1.0f, 0.0f); // Top
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glVertex3f(1.0f,-1.0f, 0.0f); // Bottom Right
glEnd();
Tất nhiên, bạn nên thay đổi mã ví dụ này theo nhu cầu của bạn.
Thật thú vị khi đọc, mr. salad :) – catchmeifyoutry
Vâng, blog đó có đầy đủ các thuật toán đồ họa tuyệt vời. Đây là yêu thích của tôi: http://prideout.net/blog/?p=69 –