"raytrace shadow" in raytracing renderer? uh-oh
"raytrace shadow" in raytracing renderer? uh-oh
uh uh, tính code cái nèy nè nhưng mà máy chậm we' ngồi debug hổng nổi.Được gửi bởi Mach2
Tớ đang muốn học về openGL trong C++ hoặc trong VB cũng được, các bạn có thể chỉ cho mình ở đâu có sách hướng dẫn về openGL được không?
Mình cảm ơn rất nhiều.
Các bạn cho hỏi cái này tí
Tui có 1 đoạn mã về OPENGL như sau:
#include <gl/glut.h>
#include <math.h>
void Render()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glPushMatrix();
glRotatef(-20,1,0,0);
glBegin(GL_TRIANGLES);
glColor3f(0,0,1);
glVertex3f(0,-20,1);
glVertex3f(20,20,1);
glVertex3f(-20,20,1);
glColor3f(0,1,0);
glVertex3f(0,0,0);
glVertex3f(-20,-20,0);
glVertex3f(20,-20,0);
glEnd();
glPopMatrix();
glFlush();
}
void Change(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);
float k=float(w)/float(h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-100*k,100*k,-100,100,100,-100);
else
glOrtho(-100,100,-100/k,100/k,100,-100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void main()
{
glutInitDisplayMode(GLUT_SINGLE);
glutCreateWindow("Simple");
glShadeModel(GL_FLAT);
glutDisplayFunc(Render);
glutReshapeFunc(Change);
glutMainLoop();
}
Trong hàm Render();
Cái triangle đầu tiên nó nằm trong mặt phằng z=1 có màu xanh da trời và cái triangle tiếp theo màu xanh lá nằm trong mặt phằng z=0;
Cậu hòi như thế này .Tại sao khi vẽ ra màn hình cái triangle màu xanh da trời nó lại nằm dưới cái màu xanh lá mà trong khi đó tui đã enable Depth Test rồi
Mình nhìn từ trên trục z thằng xuống mặt phằng XOY thì tất nhiên cái Z=1 phải nằm trên chứ ,sao nó lại làm ngược lại là sao
Được sửa bởi whitepenguin lúc 03:13 ngày 23-08-2005
abcdefghijklmnoprstuif(w<=h)
glOrtho(-100*k,100*k,-100,100,100,-100);
else
glOrtho(-100,100,-100/k,100/k,100,-100);
gì thế ,có gì sai đâu ha bạn???
Vậy là coi như kô ai bít về việc này àh
bó tay bác luôn, chỉ thế mà còn ko tự tìm được chỗ sai.
Bác cho znear với zfar giá trị như thế thì tất cả z đều bị đổi dấu. Bác xem cái matrix tạo bởi hàm Ortho là biết. Fix -> swap 2 giá trị đó lại.
Bác lười quá đấy.
Cho hỏi tí mí bác
cho matrix M
| Ux | Vx | Nx | Tx |
| Uy | Vy | Ny |Ty |
| Uz | Vz | Nz | Tz |
| 0 | 0 | 0 | 1 |
U V N la` vector cơ sở
T là Vector Transpase
Tui đọc trong sách OpenGL nó nói cách Transform 1 vertex P như sau
P' =M * P;
Theo cách này P sẽ được chuyển đổi sang tọa độ Eye và dịch chuyển theo T
Nhưng mà cho hỏi cái nè
M* P thì nó sẽ lấy Từng hàng của Matrix M nhân cho Vertex P
Vídu hàng dầu tiên là (Ux V x Nx Tx ) *P và cộg cách kết quả nhân lại
vậy nếu làm như thế thì biến đổi sai cơ sơ rồi
Tại vì cơ sở mới cho Px là Ux Uy Uz mới đúng ,còn đàng này nó lại lấy Ux Vx Nx nhânvô ,vậy sai bét rồi còn gì??
Bác viết mấy cái UVNT là cái gì vậy? P là vector hay basis? Sai là sai chổ nào?U V N la` vector cơ sở
T là Vector Transpase
Tui đọc trong sách OpenGL nó nói cách Transform 1 vertex P như sau
P' =M * P;
Theo cách này P sẽ được chuyển đổi sang tọa độ Eye và dịch chuyển theo T
Nhưng mà cho hỏi cái nè
M* P thì nó sẽ lấy Từng hàng của Matrix M nhân cho Vertex P
Vídu hàng dầu tiên là (Ux V x Nx Tx ) *P và cộg cách kết quả nhân lại
vậy nếu làm như thế thì biến đổi sai cơ sơ rồi
Tại vì cơ sở mới cho Px là Ux Uy Uz mới đúng ,còn đàng này nó lại lấy Ux Vx Nx nhânvô ,vậy sai bét rồi còn gì??
Bác nhân cái ma trận đó cho basis [1,0,0,1], [0,1,0,1] hay [0,0,1,1] thử coi sai là sai chỗ nào?
Hu hu oe oe
Bookmarks