Tôi có phải đặt chiếu sáng trong một bức ảnh OpenGL nhưng tôi không biết làm thế nào để đặt một đúng ánh sáng điểm chiếu sáng như trong hình sau:OpenGL chiếu sáng và chiếu sáng
Đối với bây giờ tôi đã cố gắng chế độ khác nhau của ánh sáng, nhưng kết quả là như sau :(
tôi đính kèm cho bạn mã mà tôi sử dụng cho kết quả của tôi. Điều gì là sai?
float specref[] = { 1.0f, 1.0f, 1.0f, 1.0f };
// Light values and coordinates
float ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f };
float diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f };
float specular[] = { 1.0f, 1.0f, 1.0f, 1.0f};
float lightPos[] = { 0.0f, -150.0f, -150.0f, 1.0f };
glEnable (GL_LIGHTING) ;
glLightfv(GL_LIGHT0,GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);
glLightfv(GL_LIGHT0,GL_SPECULAR,specular);
glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
glEnable(GL_LIGHT0);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR,specref);
glMateriali(GL_FRONT_AND_BACK,GL_SHININESS,128);
glEnable (GL_COLOR_MATERIAL) ;
glClearColor (1.0, 1.0, 1.0, 1.0);
glColor3f(0.0,0.0,0.0);
Sửa 04/11/2011 0,39 CET
Tôi cũng đính kèm display() chức năng của tôi gọi bằng glutDisplayFunc (hiển thị);
void display(void)
{
[...]
//Draw polygons in 3d
glColor3f(0.0,1.0,1.0);
glBegin(GL_QUADS);
for(i=0;i<NVERT-1;i++) {
for (j=0;j<NVERT-1;j++) {
glVertex3f((GLfloat)((sb[i*NVERT+j]).x()),
(GLfloat)((sb[i*NVERT+j]).y()),
(GLfloat)((sb[i*NVERT+j]).z()));
glVertex3f((GLfloat)((sb[i*NVERT+j+1]).x()),
(GLfloat)((sb[i*NVERT+j+1]).y()),
(GLfloat)((sb[i*NVERT+j+1]).z()));
glVertex3f((GLfloat)((sb[(i+1)*NVERT+j+1]).x()),
(GLfloat)((sb[(i+1)*NVERT+j+1]).y()),
(GLfloat)((sb[(i+1)*NVERT+j+1]).z()));
glVertex3f((GLfloat)((sb[(i+1)*NVERT+j]).x()),
(GLfloat)((sb[(i+1)*NVERT+j]).y()),
(GLfloat)((sb[(i+1)*NVERT+j]).z()));
}
}
glEnd();
glFlush();
}
Thực hành với màn hình Tôi viết các vùng nhỏ tạo thành hình 2 ° mà tôi biểu diễn (tôi bỏ qua thuật toán để tính các điểm của từng khu vực vì nó hoạt động).
Mục tiêu của tôi là phải có một kết quả tương tự như hình 1 cho sét và cung cấp con số này nhưng tôi chỉ thu được kết quả trong hình 2.
Tôi không biết làm thế nào để đặt một cách chính xác ánh sáng và làm thế nào để thiết lập con số của tôi để có được điều này (như gương).
Đăng một hoàn chỉnh, ví dụ tối thiểu đó chứng tỏ vấn đề. – genpfault
Có thể là một vài điều. Tôi đoán bạn không có bất kỳ bình thường, nhưng đoán hoang dã. Chúng ta cần một ví dụ tối thiểu như @genpfault chỉ ra. – larsmoa
Là hình ảnh đầu tiên bạn muốn đạt được và hình ảnh thứ hai bạn có vào lúc này? – NickLH