Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Làm sao để cài đặt và sử dụng OpenGL trên Cfree ?

    Mọi người cho mình hỏi là thư viện đồ họa dùng trong VS 2008 với CFREE là gì sao mình cho thư viện #include <graphics.h> vào trong bài nó toàn báo lỗi.

    Mã nguồn PHP:
    #include <graphics.h> #include <conio.h> #define ROUND(a) ((long)(a+0.5)) void plot(int xc, int yc, int x, int y, int color){ putpixel(xc+x, yc+y, color); putpixel(xc-x, yc+y, color); putpixel(xc+x, yc-y, color); putpixel(xc-x, yc-y, color); } void Mid_ellipse(int xc, int yc, int a, int b, int color){ long x, y, fx, fy, a2, b2, p; x = 0; y = b; 2 a2 = a * a; //a 2 b2 = b * b; // b fx = 0; 2 y fy = 2 * a2 * y; // 2a plot(xc, yc, x,y, color); 2 2 2 p = ROUND(b2-(a2*b)+(0.25*a)); // p=b - a b + a /4 while (fx < fy){ x++; 2 fx += 2*b2; //2b if (p<0) 2 p += b2*(2*x +3); // p=p + b (2x +3) else{ y--; 2 2 (2x +3) + a (-2y +2) p+= b2*(2*x +3) + a2*(-2*y +2); // p = p + b 2 fy -= 2*a2; // 2a } plot(xc, yc, x, y, color); } 2 2 2 2 2 2 (x+1/2) +a (y-1) - a b p = ROUND(b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1) - a2*b2);//b while (y>0){ y--; 2 fy -= 2*a2; // 2a if (p>=0) 2 (3-2y) p+=a2*(3 - 2*y); p =p + a else{ x++; 2 fx += 2*b2; // 2b 2 2 (2x +2) +a (-2y +3) p += b2*(2*x+2) + a2*(-2*y +3); //p=p + b } plot(xc, yc, x, y, color); } } void main(){ int gr_drive = DETECT, gr_mode; initgraph(&gr_drive, &gr_mode, ""); Mid_Ellipse(getmaxx() / 2, getmaxy() / 2, 150, 80, 4); getch(); closegraph(); }  
    là bài toán Viết hàm sinh đường ellipses dùng thuật giải Midpoint.Mình chưa chạy nó được trên TC vì win 7 khong cài dc Tc.Mọi người giúp mình nhé.[IMG]images/smilies/lick.gif[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    CFree cũng không chạy được đống này đâu bạn ạ,cái này bạn xem hướng dẫn của diễn đàn cách chạy code graphic trên VC++ đó http://forums.congdongcviet.com/showthread.php?t=19968
    source naỳ bạn kiếm ở đâu mà toàn số 2 thì chạy thế nào được

    Mình có sửa cho bạn để nó chạy trên OpenGL đây,cái source kia là chạy trên TC 16 bít rồi

    Mã nguồn PHP:
    long ROUND(double a) { return (long)(a+0.5) ;}void plot(int xc, int yc, int x, int y){ glVertex3d(xc+x, yc+y, 0); glVertex3d(xc-x, yc+y, 0); glVertex3d(xc+x, yc-y, 0); glVertex3d(xc-x, yc-y, 0); }BOOL DrawEllipse(const int iPointX,const int iPointY,const int iA,const int iB){ long x, y, fx, fy, a2, b2, p; x = 0; y = iB; a2 = iA * iA; //a2 b2 = iB * iB; // b2 fx = 0; fy = 2 * a2 * y; // 2a2y glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0,0.0,0.0); glBegin(GL_LINE_LOOP); plot(iPointX, iPointY, x,y); double dTemp = b2-(a2*iB)+0.25*iA; p = ROUND(dTemp); // p=b2- a2b + a2/4 while (fx < fy){ x++; fx += 2*b2; //2b2 if (p<0) p += b2*(2*x +3); // p=p + b2(2x +3) else{ y--; p+= b2*(2*x +3) + a2*(-2*y +2); // p = p + b2(2x +3) + a2(-2y +2) fy -= 2*a2; // 2a2 } plot(iPointX, iPointY, x,y); } dTemp = b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1) - a2*b2; p = ROUND(dTemp);//b2(x+1/2)2+a2(y-1)2- a2b2 while (y>0){ y--; fy -= 2*a2; // 2a2 if (p>=0) p+=a2*(3 - 2*y); //p =p + a2(3-2y) else{ x++; fx += 2*b2; // 2b2 p += b2*(2*x+2) + a2*(-2*y +3); //p=p + b2(2x +2) +a2(-2y +3) } plot(iPointX, iPointY, x,y); } glEnd(); glFlush(); return TRUE;}  

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn có thể up lại toàn bộ source từ A-Z và các thao tác nào nữa để chạy được OpenGL? Thông cảm, mình còn "gà" lắm.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • 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
  •