Trang 2 / 3 FirstFirst 123 LastLast
Hiển thị kết quả từ 11 đến 20 / 23
  1. #11
    Tham gia
    17-09-2002
    Location
    SMA
    Bài viết
    749
    Like
    0
    Thanked 3 Times in 3 Posts
    "raytrace shadow" in raytracing renderer? uh-oh

  2. #12
    Tham gia
    05-08-2004
    Bài viết
    25
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi Mach2
    "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.

  3. #13
    Tham gia
    26-01-2004
    Bài viết
    56
    Like
    0
    Thanked 0 Times in 0 Posts
    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.

  4. #14
    Tham gia
    16-07-2004
    Bài viết
    662
    Like
    0
    Thanked 3 Times in 3 Posts

    Tệ thật !

    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

  5. #15
    Tham gia
    05-07-2003
    Bài viết
    32
    Like
    0
    Thanked 0 Times in 0 Posts
    if(w<=h)
    glOrtho(-100*k,100*k,-100,100,100,-100);
    else
    glOrtho(-100,100,-100/k,100/k,100,-100);
    abcdefghijklmnoprstu

  6. #16
    Tham gia
    16-07-2004
    Bài viết
    662
    Like
    0
    Thanked 3 Times in 3 Posts
    gì thế ,có gì sai đâu ha bạn???

  7. #17
    Tham gia
    16-07-2004
    Bài viết
    662
    Like
    0
    Thanked 3 Times in 3 Posts
    Vậy là coi như kô ai bít về việc này àh

  8. #18
    Tham gia
    05-07-2003
    Bài viết
    32
    Like
    0
    Thanked 0 Times in 0 Posts
    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.

  9. #19
    Tham gia
    16-07-2004
    Bài viết
    662
    Like
    0
    Thanked 3 Times in 3 Posts
    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ì??

  10. #20
    Tham gia
    05-07-2003
    Bài viết
    32
    Like
    0
    Thanked 0 Times in 0 Posts
    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?
    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

Trang 2 / 3 FirstFirst 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •