صفحه 7 از 10 اولاول ... 56789 ... آخرآخر
نمایش نتایج 241 تا 280 از 376

نام تاپیک: آموزش OpenGL

  1. #241

    نقل قول: آموزش OpenGL

    سلام
    یه سوال دیگه:
    چطور میشه تو opengl یک شی و درگ کرد؟

  2. #242

    نقل قول: آموزش OpenGL

    سلام

    اگر منظورتون از درگ کردن یک شی خارجی باشه باید از API سیستم عامل استفاده کنید. لازمه بگم پنجره های GLUT انعطاف زیادی ندارن و فقط برای مبتدی ها مناسب هستند پیشنهاد میشه برای کار با OpenGL از API سیستم عامل یا حداقل SDL استفاده کنید.

    اما اگر منظورتون درگ کردن داخل خود برنامه باشه که باید این روند رو با ماوس کنترل کنید. اصولا باید یک شی رو pick‌( انتخاب کنبد) و مکان رو به جایی که ماوس هست انتقال بدید و لحظه ای که ماوس رها شد از انتقال شی جلوگیری کنید.

  3. #243
    کاربر جدید
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران_شهرستان بهارستان
    پست
    17

    نقل قول: آموزش OpenGL

    با سلام خدمت دوستان
    من یه برنامه که تقریبا بیشتر انیمیشنه نوشتم( البته به کمک این بخش و کمک دوستان) که دوبعدیه
    حالا میخوام سه بعدیشو بنویسم، میشه راهنمایی و کمکم کنید
    برای سه بعدی کردن باید برنامه رو از اول بنویسم یا با یه سری تغییرات میشه سه بعدیش کرد؟
    انیمیشنم چندتا آدمک هستن که روی زمین جرکت میکنن
    آیا حرکت دوربین دور اشیا با سه بعدی فرق میکنه؟

  4. #244
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    openGL خودش فرمت خاصی مثل دایرکس که .x هست نداره و باید از فرمت هایی مثل .obj استفاده کنید.
    مراحل کار :
    1- وارد یک نرم افزار سه بعدی ساز مثل 3Dmax یا maya یا blender یا ... شده بازیکن مورد نظر خودتون را طراحی می کنید .
    2- بعد از طراحی باید با فرمت .obj یا هر فرمتی که توانایی لود کردنش را در openGL دارید ذخیره می کنید . برای مثال یک فایل obj به صورت متنی حاوی یک ماتریس 4 ستونه است که خانه اول برای ذخیره نوع و سه تای بعدی مختصاته فک کنم
    3- فایل ذخیره شده را با کدی که نوشتید لود کنید .
    به همین راحتی و خوشمزگی کارکتر شما در محیط gl لود خواهد شد برای مثال این کد را ببنید . با فشردن کلید L فایل لود می شه.
    http://www.gamedev.net/topic/312335-...ing-in-detail/

  5. #245
    کاربر جدید آواتار atefe70
    تاریخ عضویت
    مهر 1390
    محل زندگی
    بوشهر
    سن
    33
    پست
    19

    نقل قول: آموزش OpenGL

    خسته نباشید

    من طبق اموزش های داده شده . دقیقا مراحل نصب رو انجام دادم . و وقتی یکی از کد های داده شده رو براش مینویسم و روی دکمه اجرا میزنم این خطا رو به من میده

    علتش چیه و چیکار باید بکنم ؟؟

    Error 1 fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or directory c:\users\ensi\documents\visual studio 2008\projects\opengl3\opengl3\tasvir.cpp 2 opengl3


    ممنون اگه راهنمایی کنید .
    سپاس

  6. #246
    کاربر جدید آواتار atefe70
    تاریخ عضویت
    مهر 1390
    محل زندگی
    بوشهر
    سن
    33
    پست
    19

    نقل قول: آموزش OpenGL

    این برنامه اگه درایورا نصفه و نیمه نصب باشه جواب نمیده یعنی ؟

  7. #247
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    فایل مورد نظر را درست کپی کردید GL/glut.hنوشته که اینو پیدا نکرد باید درست کپی کنید .

  8. #248
    کاربر جدید آواتار atefe70
    تاریخ عضویت
    مهر 1390
    محل زندگی
    بوشهر
    سن
    33
    پست
    19

    نقل قول: آموزش OpenGL

    Error 1 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib atefe2


    Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\ensi\Documents\Visual Studio 2008\Projects\atefe2\Debug\atefe2.exe atefe2


    این 2تا خطا چی میگه ؟ من دیگه واقعا گیچ شدم . کسی نمیاد به این مساله رسیدگی کنه :(

  9. #249

    نقل قول: آموزش OpenGL

    آقا من تازه میخوام شروع کنم
    همون اول اون Compiler need ها رو که کپی میکنم انگار درست نیست همون پیغام اولی رو میده بازم.
    من اونا رو تو program files x86 ریختم چون ویژوالم اونجا بود مشکلش از این میتونه باشه؟؟؟

  10. #250
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    شما بایدglut32.dll را در syswow64 کپی کنید. و x86 درسته...

  11. #251

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط amin1softco مشاهده تاپیک
    شما بایدglut32.dll را در syswow64 کپی کنید. و x86 درسته...
    همه رو وارد کردم الان چک کردم دیدم کلا اصلا هیچ هدری رو نمیشناسه هیچ برنامه ای رو نمیتونه اجرا کنه ولی تو فایل lib همه ی هدرها هست نمیدونم چیکار کنم

  12. #252
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    هیچی اول 1 متر با مانیتور فاصله بگیر بعد محکم سرتو بکوب به مانیتور خلاص والا..........
    کلا اصلا هیچ هدری رو نمیشناسه هیچ برنامه ای رو نمیتونه اجرا کنه ولی تو فایل lib همه ی هدرها هست نمیدونم چیکار کنم
    خوب ببین این می تونه مشکل از ویژوالت یک برنامه ساده داس می تونی اجرا کنی ؟

  13. #253

    نقل قول: آموزش OpenGL

    سلام به همه دوستان
    من دارم یه پروژه paint ساده می نویسم به رسم خط و مربع و دایره و ... مشکل خاصی ندارم مشکل اصلی من وقتی هستش که میخوام مختصاتی که باید اون شکل رسم بشه رو از موس بگیرم به مشکل بر میخورم من از دستور :
    glutMouseFunc( mouse);




    استفاده میکنم مشکل اینجاست که میخوام 2 تا مختصات از موس بخونه اما این مختصات هایی که میخونه با مختصات صفحه هماهنگی نداره اینم کده من هستش ممنون میشم که کمکم کنید :



    #include
    <gl/glut.h>
    #include<math.h>
    int xx1=2,xx2=70,yy1=2,yy2=2;
    int i=0;
    double round(double x)
    {
    return floor(x + 0.5);
    }
    void DDALine( GLint X1, GLint Y1, GLint X2, GLint Y2)
    {
    GLint iX, iY, Temp;
    float m, X, Y;
    if( (X2-X1) > (Y2-Y1))
    {
    if( X1 > X2)
    {
    Temp=X1; X1=X2; X2=Temp;
    Temp=Y1; Y1=Y2; Y2=Temp;
    }
    Y=Y1;
    m = (GLfloat) (Y2-Y1)/(X2-X1);
    for( iX = X1; iX <= X2; iX ++)
    {
    glBegin(GL_POINTS);
    glColor3f(1.0,0.2,0.0);
    glVertex2i(iX,round(Y));
    glEnd();
    Y += m;
    }
    }
    else
    {
    if( Y1 > Y2)
    {
    Temp=X1; X1=X2; X2=Temp;
    Temp=Y1; Y1=Y2; Y2=Temp;
    }
    X = X1;
    m = (
    float) (X2-X1)/(Y2-Y1);
    for( iY = Y1; iY <= Y2; iY ++)
    {
    glBegin(GL_POINTS);
    glColor3f(1.0,0.2,0.0);
    glVertex2i(round(X),iY);
    glEnd();
    X += m;
    }
    }
    }
    void init()
    {
    glClearColor(0,0,0,0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0,100,0,200);
    }
    void display()
    {

    glClear(GL_COLOR_BUFFER_BIT);
    glEnable(GL_POINT_SMOOTH);
    glPointSize(10);
    if (i==2)
    {
    DDALine(xx1,yy1,xx2,yy2);
    }
    glFlush();
    i=0;
    }
    void mouse(int button, int state, int x, int y)
    {
    i++;
    if (state == GLUT_DOWN)
    {

    if (i==1)
    {
    xx1=x;
    yy1=y;

    }
    if (i==2)
    {
    xx2=x;
    yy2=y;

    }

    }
     
     
    }
    int main(int argc,char **argv)
    {
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(200,200);
    glutCreateWindow(
    "Line With Slope");
    init();
    glutDisplayFunc(display);
    glutMouseFunc( mouse);
    glutMainLoop();
    return 0;
    }



  14. #254
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    مختصات ماوس معکوس است یعنی یکبار باید از ارتفاع را ازش کم کنیم تا مختصات ما بدست بیاد .
    مثلاً اگر از

    gluOrtho2D(0.0,650.0,0.0,300.0);
    .
    .
    void myMouseFunc( int button, int state, int x, int y ) {
    if ( button==GLUT_LEFT_BUTTON && state==GLUT_DOWN ) {

    xx=x;
    yy=300-(y);

    اگر دستگاه 1 باشه بجای 300 از یک کمش می کنیم.
    این پست را ببین.

  15. #255
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲͡
    سن
    30
    پست
    174

    نقل قول: آموزش OpenGL

    سلام ببخشید سوالمو اینجا می پرسم اخه سولای مختلفه !
    اول از همه یکم

    glLightfv(GL_LIGHT0, GL_POSITION, position);

    رو توضیح بدین یعنی الان منظورم اینه که این نور ما نقه ایه جهتیه اسپاته !
    چطور تعیین کنم چه مدلی باشه !

    بعد این یعنی چی ؟ چی رو فعال می کنه ؟
    glEnable(GL_CULL_FACE);

    بافر Stencil واس چیه ؟

    بعد الان من مثلا با اپن جی ال برنامه نوشتم با ورژن جندش نوشتم ؟ الان از کجا بدونم تو چه ورژنی کار می کنه !
    شیدر هم استفاده نکردم ! تو همه کار می کنه ؟




  16. #256

    نقل قول: آموزش OpenGL

    دوستان سلام
    کسی کد رسم هواپیمای 2 بعدی در opengl رو داره برام بزاره؟
    فوری یه!!!!

  17. #257
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط H_G_G_I مشاهده تاپیک
    سلام ببخشید سوالمو اینجا می پرسم اخه سولای مختلفه !
    اول از همه یکم

    glLightfv(GL_LIGHT0, GL_POSITION, position);

    رو توضیح بدین یعنی الان منظورم اینه که این نور ما نقه ایه جهتیه اسپاته !
    چطور تعیین کنم چه مدلی باشه !

    بعد این یعنی چی ؟ چی رو فعال می کنه ؟
    glEnable(GL_CULL_FACE);

    بافر Stencil واس چیه ؟

    بعد الان من مثلا با اپن جی ال برنامه نوشتم با ورژن جندش نوشتم ؟ الان از کجا بدونم تو چه ورژنی کار می کنه !
    شیدر هم استفاده نکردم ! تو همه کار می کنه ؟



    glLightfv ( light , pname , params ) → None
    پارامتر ها
    light
    یک نور را مشخص می کند . تعداد نور ها بر حسب پیاده سازی مشخص می شود ولی حداقل 8 نور پشتیبانی می شود اینها بوسیله نام سمبلیک مشخص می شوند از GL_LIGHT i زمانی که 0 ≤ i < GL_MAX_LIGHTS

    pname
    نوع منبع نور را مشخص می کند برای light
    مقادیرقابل قبول
    GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_POSITION, GL_SPOT_CUTOFF, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT, GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION, and GL_QUADRATIC_ATTENUATION are accepted.

    params
    یک اشاره گر به مقادیر که به pnameو نوع نور تخصیص داده می شود.

    تشریح :
    glLight تعیین می کند مقادیر منحصر به فرد منبع نور را مشخص می کند. light نام نور و یک نام سمبلیک از GL_LIGHT i, زمانی که 0 ≤ i < GL_MAX_LIGHTS و pname مشخص می کند یکی از 10 مشخصه منبع نور را دوباره بوسیله نام سمبلیک
    params می تونه یک مقدارباشه یا یک اشاره گر به آرایه ایی از مقادیر جدید.

    برای فعال و غیر فعال کردن محاسبات نور می توانید بوسیله فراخوانی glEnable و glDisable با آرگومان GL_LIGHTING اقدام کنید. نور پردازی بطور پیش فرض غیر فعال است. زمانی که فعال می شود منابع نور فعال در محاسبات نور پردازی شرکت می کنند . منبع نور i بوسیله دستور glEnable و glDisable با آرگومان GL_LIGHT i فعال و غیر فعال می شوند.

    10 پارامتر منبع نور به ترتیب زیر است :
    GL_AMBIENT
    نور محیط یا Ambient Light:
    params شامل 4 عدد صحیح یا ممیز شناور که مشخص می کنند رنگ نور محیطی RGBA و شدت نور را. مقادیر صحیح به صورت خطی به دستگاه واحد نگاشت می شوند بیشترین مقدار به 1 و منفی ترین مقدار به -1 نگاشت می شود. مقادیر ممیز شناور بطور مستقیم نگاشت می شوند. شدت اولیه نور (0, 0, 0, 1) است.

    GL_DIFFUSE
    نور پخشی :
    params شامل 4 عدد صحیح یا ممیز شناور که مشخص می کنند رنگ نور محیطی RGBA و شدت نور را. مقادیر صحیح به صورت خطی به دستگاه واحد نگاشت می شوند بیشترین مقدار به 1 و مقادیر ممیز شناور بطور مستقیم نگاشت می شوند. مقدار اولیه برای GL_LIGHT0 بابر (1, 1, 1, 1) است. برای نور های دیگر مقادیر دیگر مقادیر دیگر (0, 0, 0, 0) است.

    GL_SPECULAR
    نور متمرکز :
    params شامل 4 عدد صحیح یا ممیز شناور که مشخص می کنند رنگ نور محیطی RGBA و شدت نور را. مقادیر صحیح به صورت خطی به دستگاه واحد نگاشت می شوند بیشترین مقدار به 1 و مقادیر ممیز شناور بطور مستقیم نگاشت می شوند. مقدار اولیه برای GL_LIGHT0 برابر (1, 1, 1, 1) و برای نور ها دیگر برابر (0, 0, 0, 0) است.

    GL_POSITION
    نور موضعی, نقطه ایی :

    params شامل 4 عدد صحیح یا ممیز شناور که مشخص می کنند رنگ نور محیطی RGBA و شدت نور را. مقادیر صحیح به صورت خطی به دستگاه واحد نگاشت می شوند بیشترین مقدار به 1 و مقادیر ممیز شناور بطور مستقیم نگاشت می شوند.

    موضع تبدیل بوسیله ماتریس modelview است زمانی که glLight فراخوانی می شود زمانی که فقط یک نقطه است و آن در مختصات چشم ذخیره می شود اگر کامپوننت w از موقعیت صفر باشد نور رفتار می کند شبیه منبع نور مستقیم . محاسبات نور پخشی و موضعی نیاز به جهت دارند . ولی نه موقعیت واقعی موقعیت شروع برابر (0, 0, 1, 0) است پس منبع اولیه نور مستقیم است . به موازات جهت مختصات محور -z.

    بقیشم من حسش نبود ترجمه کنم ولی اینا رو برو در قسم برنامه های و مثال های openGL یک برنامه هست مقادیرشونو کم و زیاد کن بدست میاد.

    GL_SPOT_DIRECTION
    params contains three integer or floating-point values that specify the direction of the light in homogeneous object coordinates. Both integer and floating-point values are mapped directly. Neither integer nor floating-point values are clamped.

    The spot direction is transformed by the inverse of the modelview matrix when glLight is called (just as if it were a normal), and it is stored in eye coordinates. It is significant only when GL_SPOT_CUTOFF is not 180, which it is initially. The initial direction is (0, 0, -1).

    GL_SPOT_EXPONENT
    params is a single integer or floating-point value that specifies the intensity distribution of the light. Integer and floating-point values are mapped directly. Only values in the range [0,128] are accepted.

    Effective light intensity is attenuated by the cosine of the angle between the direction of the light and the direction from the light to the vertex being lighted, raised to the power of the spot exponent. Thus, higher spot exponents result in a more focused light source, regardless of the spot cutoff angle (see GL_SPOT_CUTOFF, next paragraph). The initial spot exponent is 0, resulting in uniform light distribution.

    GL_SPOT_CUTOFF
    params is a single integer or floating-point value that specifies the maximum spread angle of a light source. Integer and floating-point values are mapped directly. Only values in the range [0,90] and the special value 180 are accepted. If the angle between the direction of the light and the direction from the light to the vertex being lighted is greater than the spot cutoff angle, the light is completely masked. Otherwise, its intensity is controlled by the spot exponent and the attenuation factors. The initial spot cutoff is 180, resulting in uniform light distribution.
    GL_LINEAR_ATTENUATION , GL_QUADRATIC_ATTENUATION , GL_CONSTANT_ATTENUATION
    params is a single integer or floating-point value that specifies one of the three light attenuation factors. Integer and floating-point values are mapped directly. Only nonnegative values are accepted. If the light is positional, rather than directional, its intensity is attenuated by the reciprocal of the sum of the constant factor, the linear factor times the distance between the light and the vertex being lighted, and the quadratic factor times the square of the same distance. The initial attenuation factors are (1, 0, 0), resulting in no attenuation.
    Notes
    It is always the case that GL_LIGHT i = GL_LIGHT0 + i.



    بعد این یعنی چی ؟ چی رو فعال می کنه ؟
    glEnable(GL_CULL_FACE);
    ببین در ابتدا این مشخصه غیر فعال است ولی اگر فعال بشه با این دستور ما خودمون بوسیله دستور glFrontFace مشخص می کنیم پشت یا رو اجسام برای رندر انتخاب یا گلچین بشود !!
    GL_FRONTو GL_BACK, و GL_FRONT_AND_BACK قابل قبول است .

    بافر استنسیل به طور خیلی ساده برای مشخص کردن یک محدوده برای رندر کردن استفاده می شود و یک بافر اضافه محسوب می شود. ولی می شه بوسیله اون افکت های خیلی زیادی را خلق کرد یا همین سایه زدن و اینا.


    بعد الان من مثلا با اپن جی ال برنامه نوشتم با ورژن جندش نوشتم ؟ الان از کجا بدونم تو چه ورژنی کار می کنه !
    ببنید ورژن openGL بستگی به کارت گرافیک شما داره وقتی درایور ها نصب می شوند openGL هم آپدیت می شود ولی بطور پیش فرض روی ویندوز 1.1 است که سرعت و ایناش کمتر از ورژن های بعدی است و یکسری قابلیت ها را نداره شما وقتی از یک قابلیت جدید استفاده کنید می تونید برید وارد سایت nvidia و ببنید ورژن فلان آیا ساپورتش میک نه یا خیر ولی اکثراً مشکلی نداره حتی من می تونم بهتون قطعه کد بدم که برنامه رو روی آندروید یا گوشی آیفون اپل تست کنید .

    لینک های مفید :
    http://www.opengl.org/wiki/Getting_Started
    http://en.wikipedia.org/wiki/Stencil_buffer
    http://developer.apple.com/library/i...roduction.html
    http://developer.android.com/trainin...ngl/index.html

    اینا شاید غلط و اشتباه زیاد داشته باشه خوشحال می شم دوستان اصلاح کنند.

  18. #258
    کاربر جدید آواتار nok_tala
    تاریخ عضویت
    دی 1391
    محل زندگی
    من از جغرافیای جهان فقط راه خانه را بلدم
    پست
    3

    نقل قول: آموزش OpenGL

    سلام میشه توابع
    glDrawArrays
    glDrawArraysIndirect
    glDrawArraysInstanced
    glDrawArraysInstancedBaseInstance
    glDrawBuffers
    glDrawElementsBaseVertex رو توضیح بدید ؟
    آخرین ویرایش به وسیله nok_tala : سه شنبه 05 دی 1391 در 21:02 عصر

  19. #259
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    glDrawArrays ( mode , first , count ) → رندر کردن اشکال پایه بوسیله داده های ماتریسی

    پارا متر ها :
    mode
    نوع شکل پایه را مشخص می کند و می تواند مقادیر ثابت زیر باشد :
    GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, و GL_POLYGON قابل قبول هستند.

    first
    مشخص کننده راس شروع.

    count
    مشخص کننده تعداد که باید رندر شود.

    Description
    glDrawArrays specifies multiple geometric primitives with very few subroutine calls. Instead of calling a GL procedure to pass each individual vertex, normal, texture coordinate, edge flag, or color, you can prespecify separate arrays of vertexes, normals, and colors and use them to construct a sequence of primitives with a single call to glDrawArrays.

    When glDrawArrays is called, it uses count sequential elements from each enabled array to construct a sequence of geometric primitives, beginning with element first. mode specifies what kind of primitives are constructed, and how the array elements construct those primitives. If GL_VERTEX_ARRAY is not enabled, no geometric primitives are generated.

    Vertex attributes that are modified by glDrawArrays have an unspecified value after glDrawArrays returns. For example, if GL_COLOR_ARRAY is enabled, the value of the current color is undefined after glDrawArrays executes. Attributes that aren't modified remain well defined.

    Notes
    glDrawArrays is available only if the GL version is 1.1 or greater.


    برای بقیه هم به این رفرنس opengl 4 مراجعه کنید
    http://www.opengl.org/sdk/docs/man/

  20. #260

    نقل قول: آموزش OpenGL

    سلام میشه بگید چطور میشه ابر بیضی سه بعدی رسم کرد؟
    و اینکه واسه انداختن عکس روی بزیه چیکار کنیم؟

  21. #261

    نقل قول: آموزش OpenGL

    سلام میشه بگید چطور میشه ابر بیضی سه بعدی رسم کرد؟
    و اینکه واسه انداختن عکس روی بزیه چیکار کنیم؟
    برای ابر اول باید تابع رسم کمان رو بنویسی !
    بعد ابر درست کردن کاری نداره دیگه ساده میشه !
    برای عکس انداختن هم اول باید عکس رو با یه کتاب خون ای لود کنید بعد وارد پان جی ال کنید !
    سرچ کنید مثال هست ! اگه تو کد مشکلی داشتین بگین !

  22. #262

    نقل قول: آموزش OpenGL

    مرسی از کمکتون اما من اینارو میدونم !!!!!!
    تو ابربیضی وقتی x,y,z بدست آوردیم باید چیکار کنیم؟ تابعی هست واسه کشیدن ابربیضی؟
    عکسم هرجا سرچ کردم جواب درست حسابی پیدا نکردم هیچ جا درست توضیح نداده :(

  23. #263

    Question نقل قول: آموزش OpenGL

    با سلام
    میخواستم بدونم برای انتخاب یک شکل دو بعدی چطوری باید مختصات اون شکل رو برای موس بدست بیارم؟

    یه برنامه کوچیک دارم مینویسم که با کلیک بر روی یک مربع 1x1 به حالت انتخاب بره(مثلا دور اون خط کشیده بشه) و بعد از اون، با کلید های صفحه کلید قابل جابجایی باشه و در صورتی که جای دیگری از صفحه(غیر از مربع) کلیک شد دیگه از حالت انتخاب خارج بشه.

    بنده به صورت زیر محدوده شکل رو مشخص کردم اما انتخاب نمیشه!!
    میدونم کاملا اشتباه هستش، اما جور دیگه ای هم نتونستم حساب کنم!!!
    با کلیک بر روی صفحه، تابع زیر فراخوانی میشه:

     void Positions(int x,int y)
    {
    if((x>(px-0.5) && x<(px+0.5)))
    if((y<(py+0.5) && y>(py-0.5)))
    {
    select=true;
    draw_Quad();
    glColor3f(1.0, 1.0, 1.0);
    glLineWidth(2.0);
    draw_Quad_Line();
    }
    else
    {
    select=false;
    glClearColor(0.5, 1.0, 0.5, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    draw_Quad();
    }
    glFlush();
    }


    ممنون میشم که راهنماییم کنید.

    اگه جایی از سوال مجهول هستش، یا نیازی به ارسال کل کد هست بفرمایید تا زودتر به جواب برسیم.
    با تشکر.
    آخرین ویرایش به وسیله kazemiam : یک شنبه 25 فروردین 1392 در 14:17 عصر دلیل: قرار دادن تکه کد

  24. #264
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    اول از همه این را در نظر بگیرید شما در یک حلقه هستید که هر ثانیه 30 بار تکرار می شه بعدش کد بزنید . اول شما باید بوسیله glut مختصات ماوس را بدست بیارید و یک شرط چک کنید اگر مختصات ماوس در محدوده شکل بود select را 1 یا true کندو در غیر اینصورت 0 یا false برای اینکه مختصات بهتر تنظیم بشه شما باید پرجکشن را روی 500 * 500 یا هر مقدار دلخواه دیگر تنظیم کنید . اصولاً برای ترسیم بهتر از یک لیست پیوندی یا درخت یا هر چیزی که راحت تر هستید استفاده کنید .
    یک کد برای اینکه ازش الهام بگیرید گذاشتم که وقتی مأوس میره روش رنگش سبز می شه ..

    #include <math.h>
    #include <GL/glut.h>
    bool flag=0;
    void special( int key, int x, int y)
    {
    switch(key){
    case GLUT_KEY_UP:
    //your code
    break;
    case GLUT_KEY_DOWN:
    //your code
    break;
    }
    }

    void init(void){
    glClearColor(1.0,1.0,1.0,0.0);
    glMatrixMode(GL_PROJECTION); //projection parameters
    gluOrtho2D(0.0,300.0,0.0,300.0); //sets up WC extent
    }

    void Display()
    {
    glClear(GL_COLOR_BUFFER_BIT);


    if (flag) glColor3f(0.0, 0.0, 1.0);
    else glColor3f(0.0, 1.0, 0.0);
    glPushMatrix();
    glTranslatef(150.0,150.0,0.0);
    GLUquadricObj *circle = gluNewQuadric ();
    gluQuadricDrawStyle (circle, GLU_FILL);
    gluDisk (circle,0,100,5000,1);
    gluDeleteQuadric(circle);

    glPopMatrix();


    glutSwapBuffers();
    }
    void myMotionFunc( int x, int y ) {
    y=300-(y);
    if(sqrt(double(pow(float(abs(150-x)),2)+pow(float(abs(150-y)),2)))>100) flag=1;
    else flag=0;
    }
    int main(int argc, char **argv)
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowPosition(500,500);
    glutInitWindowSize(300,300);

    glutCreateWindow("Circle key");
    init();
    glutDisplayFunc(Display);
    glutIdleFunc(Display);
    glutPassiveMotionFunc (myMotionFunc);
    glutSpecialFunc(special);
    glutMainLoop();
    return 0;
    }


  25. #265

    نقل قول: آموزش OpenGL

    با تشکر بخاطر کد برنامه،
    البته چون تازه وارد هستم راستش از کدای بالا زیاد سر در نیاوردم و حتما از اون کدا هم سوال میپرسم.
    اگه لطف کنید کد بنده رو یه بررسی کنید، یه فرمولی برای محاسبه مکان شیئ از خودم درست کردم که حتی اگه اندازه ی پنجره رو توی کدها تغییر بدیم بازم عمل کنه.
    فقط یه مشکل کوچیکی وجود داره که به راهنمایی دوستان نیاز دارم.
    زمانی که میخوایم شیئ رو انتخاب میکنیم هیچ مشکلی وجود نداره، ولی زمانی که برای از انتخاب در آوردن شیئ به کنار شیئ کلیک میکنیم مشکل خودش رو نشون میده.
    اگر بالا یا پایین شیئ کلیک کنیم از انتخاب درمیاد، ولی اگر به چب یا راستش کلیک کنیم، انگار که اصلا فرمان کلیکی وجود نداره یا اینکه انگار روی خود شیئ کلیک میکنیم!!!!!!!!!!!!!!!!!!!!!!!!
    من یکم داغ کردم اگه زودتر کمک کنید ممنون میشم.
    اینم کد برنامه:

    // Select_Move_shape.cpp : Defines the entry point for the console application.

    #include "stdafx.h"
    #include <stdlib.h>
    #include <glut.h>

    GLsizei wh = 500, ww = 500;

    GLfloat px = 0.0;
    GLfloat py = 0.0;
    GLfloat Munit = 0.05;

    GLfloat wx = ww/2;
    GLfloat wy = wh/2;
    GLfloat wxMunit = wx * Munit;
    GLfloat wyMunit = wy * Munit;

    bool select=false;
    GLfloat size = 0.5;
    GLfloat PXsize = wx* size;
    GLfloat PYsize = wy* size;


    void draw_Quad()
    {
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_QUADS);
    glVertex2f(px-size, py+size);
    glVertex2f(px+size, py+size);
    glVertex2f(px+size, py-size);
    glVertex2f(px-size, py-size);
    glEnd();
    glFlush();
    }

    void Positions(int x,int y)
    {
    //x = ww - x;
    y = wh - y;

    if((x>(wx-PXsize) && x<(wx+PXsize))) //(float)
    if((y<(wy+PYsize) && y>(wy-PYsize)))
    {
    select=true;

    glClearColor(0.5, 0.5, 1.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    draw_Quad();
    }
    else
    {
    select=false;
    glClearColor(0.5, 1.0, 0.5, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    draw_Quad();
    }
    glFlush();
    }

    void my_key_events (unsigned char key, int x, int y )
    {
    int k=key;
    printf("Key Value Is: %d\n",k);
    switch ( key ) {
    case 'a': case 'A': //case GLUT_KEY_LEFT:
    if(select==true)
    {
    px-=Munit; //Left
    wx-=wxMunit;
    draw_Quad();
    }
    break;
    case 'd': case 'D': //case GLUT_KEY_RIGHT:
    if(select==true)
    {
    px+=Munit; //0.05--2.5//Right
    wx+=wxMunit;
    draw_Quad();
    }
    break;
    case 'w': case 'W': //case GLUT_KEY_UP:
    if(select==true)
    {
    py+=Munit; //Up
    wy+=wxMunit;
    draw_Quad();
    }
    break;
    case 's': case 'S': //case GLUT_KEY_DOWN:
    if(select==true)
    {
    py-=Munit; //Down
    wy-=wxMunit;
    draw_Quad();
    }
    break;

    case 'r' : case 'R' :
    glColor3f(1.0, 0.0, 0.0); //Red
    draw_Quad();
    break;
    case 'g' : case 'G' :
    glColor3f(0.5, 1.0, 0.5); //Green
    draw_Quad();
    break;
    case 'b' : case 'B' :
    glColor3f(0.0, 0.0, 1.0); //Blue
    draw_Quad();
    break;
    case 'q' : case 'Q' :
    exit ( EXIT_SUCCESS);
    break;
    }
    }

    void mouse_action(int btn, int state, int x, int y)
    {
    if(btn==GLUT_RIGHT_BUTTON)
    {
    glClearColor(1.0, 1.0, 1.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    draw_Quad();
    }
    if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
    {
    Positions(x,y);
    printf("Xs: %d\nYs: %d\n\n",x,y);
    if((x>0 && y>0) && (x<=10 && y<=10))
    printf("OKsss\n");
    }
    }

    void mydisplay(void)
    {
    glClearColor(0.8, 1.0, 0.8, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(0.0, 0.0, 0.0); //Black

    draw_Quad();
    glFlush();
    }

    int main(int argc, char** argv)
    //int _tmain(int argc, _TCHAR* argv[])
    {
    glutInit(&argc,argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(500,150);
    glutCreateWindow("Move_Game => Author: Kazemian");

    //init(); //!!!!!

    glutDisplayFunc(mydisplay);
    glutMouseFunc (mouse_action);

    glutKeyboardFunc( my_key_events );
    //glViewport(0,0,2,2);

    glutMainLoop();
    return 0;
    }

  26. #266
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    یکمی اصلاحات برات انجام دادم ولی انگار کلاً ما در و دیوار حرف می زنیم !!!

    // glut.cpp : Defines the entry point for the console application.
    //

    // Select_Move_shape.cpp : Defines the entry point for the console application.

    #include "stdafx.h"
    #include <stdlib.h>
    #include <GL/glut.h>

    GLsizei wh = 500, ww = 500,color=1;

    GLfloat px = 0.0;
    GLfloat py = 0.0;
    GLfloat Munit = 1;

    GLfloat wx = ww/2;
    GLfloat wy = wh/2;
    GLfloat wxMunit = wx * Munit;
    GLfloat wyMunit = wy * Munit;

    bool select=false;
    GLfloat size = 200;
    GLfloat PXsize = wx* size;
    GLfloat PYsize = wy* size;


    void draw_Quad()
    {
    glBegin(GL_QUADS);
    glVertex2f(px, py);
    glVertex2f(px, py+size);
    glVertex2f(px+size, py+size);
    glVertex2f(px+size, py);
    glEnd();

    }
    void draw_OQuad()
    {
    glColor3f(1.0, 0.0, 0.0);
    glBegin(GL_LINE_LOOP);
    glVertex2f(px, py);
    glVertex2f(px, py+size);
    glVertex2f(px+size, py+size);
    glVertex2f(px+size, py);
    glEnd();
    }

    void Positions(int x,int y)
    {
    //x = ww - x;
    y = wh - y;

    if((x>(wx-PXsize) && x<(wx+PXsize))) //(float)
    if((y<(wy+PYsize) && y>(wy-PYsize)))
    {
    select=true;

    glClearColor(0.5, 0.5, 1.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    draw_Quad();
    }
    else
    {
    select=false;
    glClearColor(0.5, 1.0, 0.5, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    draw_Quad();
    }
    glFlush();
    }

    void my_key_events (unsigned char key, int x, int y )
    {
    int k=key;
    printf("Key Value Is: %d\n",k);
    switch ( key ) {
    case 'a': case 'A': //case GLUT_KEY_LEFT:
    if(select==true)
    {
    px-=Munit; //Left
    wx-=wxMunit;

    }
    break;
    case 'd': case 'D': //case GLUT_KEY_RIGHT:
    if(select==true)
    {
    px+=Munit; //0.05--2.5//Right
    wx+=wxMunit;

    }
    break;
    case 'w': case 'W': //case GLUT_KEY_UP:
    if(select==true)
    {
    py+=Munit; //Up
    wy+=wxMunit;

    }
    break;
    case 's': case 'S': //case GLUT_KEY_DOWN:
    if(select==true)
    {
    py-=Munit; //Down
    wy-=wxMunit;

    }
    break;


    case 'q' : case 'Q' :
    exit ( EXIT_SUCCESS);
    break;
    }
    }

    void mouse_action(int btn, int state, int x, int y)
    {
    y=wh-y;
    if(btn==GLUT_RIGHT_BUTTON)
    {
    draw_Quad();
    }
    if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
    {
    //Positions(x,y);
    printf("Xs: %d\nYs: %d\n\n",x,y);

    if (x>=(px-size) && x<=(px+size) && y<= (py+size) &&y>= (py-size))
    select=true;
    else
    select=false;
    printf("select: %d\n",select);

    }
    }

    void mydisplay(void)
    {
    glClearColor(0.8, 1.0, 0.8, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(0.0, 1.0, 0.0); //Black

    draw_Quad();
    if (select) draw_OQuad();



    glutSwapBuffers();
    glFlush();
    }

    int main(int argc, char** argv)
    {
    glutInit(&argc,argv);
    glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize( wh,ww);
    glutInitWindowPosition(500,150);
    glutCreateWindow("Move_Game => Author: Kazemian");

    glClearColor(0.8, 1.0, 0.8, 0.0);
    glMatrixMode(GL_PROJECTION); //projection parameters
    gluOrtho2D(0.0,wh,0.0,ww); //sets up WC extent

    glutDisplayFunc(mydisplay);
    glutIdleFunc(mydisplay);
    glutMouseFunc (mouse_action);

    glutKeyboardFunc( my_key_events );
    glutIdleFunc(mydisplay);
    glutMainLoop();
    return 0;
    }

  27. #267

    Exclamation نقل قول: آموزش OpenGL

    بخاطر جوابگوییتون از شما ممنونم.
    اما اگه دقت کنید همون مشکلی که توی کد من هستش، داخل کد شما هم وجود داره(داخل این کد سمت چپ و پایین اون برای از انتخاب در آوردن شیئ بی تاثیرند)!!!
    با این تفاوت که شما از توابع حرفه ای تری استفاده کردید که هنوز سوادم نمیرسه.
    نقل قول نوشته شده توسط amin1softco مشاهده تاپیک
    یکمی اصلاحات برات انجام دادم ولی انگار کلاً ما در و دیوار حرف می زنیم !!!

    glMatrixMode(GL_PROJECTION); //projection parameters
    gluOrtho2D(0.0,wh,0.0,ww); //sets up WC extent

    glutDisplayFunc(mydisplay);
    glutIdleFunc(mydisplay);
    glutMouseFunc (mouse_action);

    glutIdleFunc(mydisplay);
    یعنی درو دیوار برنامه؟
    یه چند تا سوال:
    به اشتباه از دو تابع Idle استفاده شده؟ یا دلیل خاصی داره؟
    تابع Ortho دقیقا چیه و چطوری کار میکنه؟

    و اینکه من برای نمایش حالت انتخاب، از خط دور شکل استفاده کردم ولی درست نشون نمیداد!!
    میشه توضیح بدید که از چه ترفندی استفاده کردید؟
    آخرین ویرایش به وسیله kazemiam : دوشنبه 26 فروردین 1392 در 19:58 عصر

  28. #268
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: آموزش OpenGL

    مشکل از شرط سلکت است دیگه اینجوری درست می شه

    if (x>=(px) && x<=(px+size) && y<= (py+size) &&y>= (py))
    select=true;
    else
    select=false;

    کد بالا را جایگزین کنید درست می شه در و دیوارش !!
    کد من مثل شماست ؟! یا حضرت ....
    نه نیاز نیست همون یکی کافیه اشتباه کده :دی
    تابع Ortho یک سرچ بزنید پویا چند بار توضیح داده به خوبی و خیلی کامل خلاصش اینه که ماتریس پیش فرض 1 است ما می آییم با اندازه پنجره تنظیمش می کنیم برای راحت کار کردن با مختصات ماوس
    از ترفند خاصی استفاده نشده اگر دقت کنید یک تابع دیگه تعریف شده که به جای مستطیل خط می کشه همین !
    آخرین ویرایش به وسیله amin1softco : دوشنبه 26 فروردین 1392 در 21:09 عصر

  29. #269

    Thumbs up نقل قول: آموزش OpenGL

    درسته مشکل برطرف شد.
    فقط الان دارم سعی میکنم با این حلقه ی تکراری که شما گفتید کنار بیام تا برنامه رو به سبک دیگه ای تغییر بدم(یه جور تمرین).!!!
    نقل قول نوشته شده توسط kazemiam مشاهده تاپیک
    اما اگه دقت کنید همون مشکلی که توی کد من هستش، داخل کد شما هم وجود داره!!!

    و اینکه من برای نمایش حالت انتخاب، از خط دور شکل استفاده کردم ولی درست نشون نمیداد!!
    بنده هم همچین تابعی نوشته بودم، فقط دیدم درست کار نمیکنه پاکش کردم!!
    البته اون تابع رو داخل تابع Position استفاده کرده بودم که شما زحمت کشیدید کلا بیخیال تابع Position شدی.


    نقل قول نوشته شده توسط amin1softco
    کد من مثل شماست ؟! یا حضرت ....
    مشکلمون شبیه به همه، وگرنه کد شما کجا و کد ما...
    ما که جسارت نمیکنیم، پوزش مرا پذیرا باشید.
    ممنون.

  30. #270

    نقل قول: آموزش OpenGL

    سلام دوستان
    من با ویژوال استادیو 2012 هر برنامه ای که برای OpenGL مینویسم ارر میده و نمیتونه فایل exe را ایجاد کنه باید چیکار کنم ؟

  31. #271

    نقل قول: آموزش OpenGL

    من این کد صفحه 321 کتاب قلی زاده را نوشتم ولی با این که مثل کتابه باز ارر میده کدش را اینجا میزارم از دوستان میخوام که کمک کنن ببینن مشکل چیه
    پیشاپیش سپاس گذارم
    این کد الگوریتم برش چند ضلعی ساترلند-هاگمن هستش


    # include<stdlib.h>
    # include <GL/glut.h>
    # include <math.h>
    # include <iostream.h>
    class wcPt2D {
    public:
    GLfloat x, y;
    };
    typedef enum {Letf, Right, Bottom, Top } Boundary;
    const GLint nClip = 4;
    GLint inside (wcPt2D p, Boundary b, wcPt2D wMin, wcPt2D wMax)
    {
    switch (b) {
    case Left: if (p.x < wMin.x) return (false); break;
    case Right: if (p.x > wMax.x)return (false); break;
    case Bottom: if (p.y < wMIn.y)return (false); break;
    case Top: if (p.y > wMax.y) return (false); break;
    }
    return (true);
    }
    GLint cross (wcPt2D p1, wcPt2D p2, Boundary winEdge, wcPt2D wMin, wcPt2D wMax)
    {
    if (inside (p1, winEdge, wMin, wMax) == inside (p2, winEdge, wMin, wMax))
    return (false);
    else return (true);
    }
    wcPt2D intersect (wcPt2D p1, wcPt2D p2, Boundary winEdge, wcPt2D wMin, wcPt2D wMax)
    {
    wcPt2D iPt;
    GLfoat m;

    if (p1.x!= p2.x) m= (p1.y - p2.y) / (p1.x - p2.x);
    switch (winEdge) {
    case Left:
    iPt.x = wMin.x;
    iPt.y = p2.y + (wMin.x - p2.x) * m;
    break;
    case Right:
    iPt.x = wMax.x;
    iPt.y = p2.y + (wMax.x - p2.x) * m;
    break;
    case Bottom:
    iPt.y = wMin.y;
    if (p1.x!= p2.x) iPt.x = iPt.x = p2.x + (wMin.y - p2.y) / m;
    else iPt.x = p2.x;
    break;
    case Top:
    iPt.y = wMax.y;
    if (p1.x != p2.x) iPt.x = p2.x + (wMax.y - p2.y) / m;
    else iPt.x = p2.x;
    break;
    }
    return (iPt);
    }
    void clipPoint (wcPt2D p, wcPt2D p2, Boundary winEdge, wcPt2D wMin, wcPt2D wMax
    wcPt2D * pOut, int * cnt, wcPt2D first[], wcPt2D * s)
    {
    wcPt2D iPt;

    if (!first[winEdge])
    first[winEdge] = &p;
    else
    if (cross (p, s[winEdge], winEdge, wMin, wMax)){
    iPt = intersect (p, s[winEdge], winEdge, wMin, wMax);
    if (winEdge < Top)
    clipPoint (iPt, b+1, wMin, wMax, pOut, cnt, first, s);
    else {
    pOut[*cnt] = iPt; (*cnt)++;
    }
    }
    s[winEdge] = p;
    if (inside (p, winEdge, wMin, wMax))
    if (winEdge < Top)
    clipPoint (P, winEdge + 1, wMin, wMax, pOut, cnt, first, s);
    else {
    pOut[*cnt] = p; (*cnt)++;
    }
    }
    void closeClip (wcPt2D wMin, wcPt2D wMax, wcPt2D * pOut, GLint * cnt, wcPt2D * first[ ], wcPt2D * s)
    {
    wcPt2D pt;
    Boundary winEdge;

    for (winEdge = Left ; winEdge <= Top ; winEdge++) {
    if (cross (s[winEdge], *first[winEdge], winEdge, wMin, wMax)) {
    pt = intersect (s[winEdge], *first[winEdge], winEdge, wMin, wMax);
    if (winEdge < Top)
    clipPoint (pt, winEdge + 1, wMin, wMax, pOut, cnt, first, s);
    else {
    pOut[*cnt] = pt; (*cnt)++;
    }
    }
    }
    }
    GLint polygonClipSuthHodg (wcPt2D wMin, wcPt2D wMax, GLint n, wcPt2D * pIn, wcPt2D * pOut)
    {
    wcPt2D * first[nClip] = {0, 0, 0, 0 }, s[nClip]:
    GLint k, cnt = 0;
    for (k = 0; k < n; k++)
    clipPoint (pIn[k], Left, wMin, wMax, pOut, &cnt, first, s);
    closeClip (wMin, wMax, pOut, &cnt, first, s);
    return (cnt);
    }

  32. #272
    کاربر دائمی آواتار orache
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    رشت
    سن
    28
    پست
    571

    نقل قول: آموزش OpenGL

    نمیدونم چه اروری میده ولی در خط 9 این کد شما نوشتین Letf شما اول نوشتین Letf ولی بعد از Left استفاده کردین

  33. #273
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    خوی
    پست
    454

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط atefe70 مشاهده تاپیک
    Error 1 error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib atefe2


    Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\ensi\Documents\Visual Studio 2008\Projects\atefe2\Debug\atefe2.exe atefe2


    این 2تا خطا چی میگه ؟ من دیگه واقعا گیچ شدم . کسی نمیاد به این مساله رسیدگی کنه :(
    دوستان این خطاها رو به من میده.
    نمی دونم مشکل از چیه.خواهش می کنم کمکم کنید

  34. #274

    نقل قول: آموزش OpenGL

    با سلام خسته نباشين

    بصورت رايگان بازديد کننده وبسايت شمارو افزايش ميديم
    سايت اسکاي رنک (سامانه افزايش سريع بازديد و بهبود رتبه السکا) تنها سايت اسکاي رنک چنين فرصتي به شما داده تا رتبه وبسايت خود رو در السکا بالا ببريد پس از همين حالا در سايت عضو بشين و آدرس وبسايت خود رو تو پنل کاربريتون اضافه کنيد و به بازديد اتومات و خريد بازديد بپردازيد موفق باشيد
    http://skyrank.ir/
    09397951796


  35. #275

    نقل قول: آموزش OpenGL

    با سلام و خسته نباشید،

    یه چندتایی سوال دارم!!

    چطوری میتونم شدت تابش یه منبع نور رو کم و زیاد کنم؟
    خودم فکر میکنم باید پارامتر چهارم A0 رو تغییر بدم، اما شاید چون هنوز کامل با OpenGL آشنا نشدم، نتونستم!!!
    GLfloat A0[4]={1,0,0,1};
    glLightfv(GL_LIGHT0,GL_DIFFUSE,A0);

    یه سوال دیگه اینکه چطور میتونم دوربین رو حرکت بدم و با رسیدن به یک شیئ با کلید های جهتی دور اون شیئ بچرخم؟
    وقتی فقط مختصات چشم(دوربین) رو تغییر میدم به شکل خیلی بدی جابجا میشه!!
    وقتی مختصات دوربین و مختصات نقطه فوکوس شده رو با هم تغییر میدم به صورت موازی جابجا میشه.
    و زمانی که مختصات نقطه فوکوس شده رو تغییر میدم مثل اینه که دوربین روی پایه قرار گرفته و به اطراف میچرخه.البته نمیدونم چرا بیش از 180 درجه نمیچرخه؟!
    (البته روش بهتری برای این کار نیاز دارم که با چرخش دوربین، سمت حرکت برای کاربر مثل قبل باشه و تغییری نکنه یعنی با کلید جلو فقط جلو بره و چپ و راست نره!!)
    لطفا پارامتر های خود تابع Perspectiv رو هم یه مخصر توضیح بدید.

    سوال بعدی هم اینه، چطور میتونم فقط یک شیئ سه بعدی رو به شکل شفاف(شیشه ای) تبدیل کنم؟

    با تشکر از زحمات شما.
    آخرین ویرایش به وسیله kazemiam : جمعه 17 خرداد 1392 در 19:46 عصر

  36. #276
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    خوی
    پست
    454

    نقل قول: آموزش OpenGL

    سلام دوستان
    کسی می تونه کمکم کنه که تو صفحه یک مخروط و حلقه و قوری داشته باشم؟
    ممنون میشم اگه کسی کمکم کنه
    چند وقته دنبالشم ولی چیزی پیدا نکردم کارم بدجور گیره

  37. #277

    نقل قول: آموزش OpenGL

    درود به دوستان

    این سه خط چیکار میکنه؟ممنون میشم راهنماییم کنین
    glutAttachMenu(GLUT_RIGHT_BUTTON);
    glutAttachMenu(GLUT_MIDDLE_BUTTON);
    glutMouseFunc(mouse);

    سپاس

  38. #278
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    خوی
    پست
    454

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط mehran788 مشاهده تاپیک
    سلام دوستان
    کسی می تونه کمکم کنه که تو صفحه یک مخروط و حلقه و قوری داشته باشم؟
    ممنون میشم اگه کسی کمکم کنه
    چند وقته دنبالشم ولی چیزی پیدا نکردم کارم بدجور گیره
    دوستان بالاخره این رو پیدا کردم
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1.0,0.0,0.0);
    glPushMatrix();
    glTranslatef(-0.6,0,0);
    glRotatef(t,t,t,0);
    glutSolidTeapot(0.2);
    glPopMatrix();


    خواهش می کنم شما هم یک لطفی بکنید و بگید اگه سه تا از این اشکال تو صفحه داشته باشیم و چه طور بهشون مکان بدیم که کجای صفحه قرار بگبیرن؟
    ممنون میشم اگه کسی کمک کنه

  39. #279
    کاربر دائمی آواتار orache
    تاریخ عضویت
    مرداد 1391
    محل زندگی
    رشت
    سن
    28
    پست
    571

    نقل قول: آموزش OpenGL

    سلام داداش ببین تو که میگی هنوز اول کاری ! اخه نه اصلا از دوربین استفاده کردی نه از هیچی الان دقیقا هم منظورتو نفهمیدم چیه میخای 3 تا قوری بسازی که رو هم نیافتن ؟؟ یعنی با فاصله از هم ساخته بشن ؟؟ اینکه کاری نداره فکر کنم تو همون کتاب انگیسیه گفته بود
    بیا ببین منظورت همینه یا خیر
    #include <freeglut.h>
    void display () {
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glPushMatrix();
    glTranslatef(0,0,-3);
    glutWireTeapot(1);
    glTranslatef(0,2,0);
    glutSolidTeapot(1);
    glPopMatrix();
    glTranslatef(0,-2,-1);
    glutSolidTeapot(1);
    glPopMatrix();
    glFlush();
    }

    void reshape ( int width, int height )
    {
    glViewport(0,0,width,height);
    }

    int main ( int argc, char * argv[] )
    {
    glutInit(&argc,argv);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(0,0);
    glutInitDisplayMode(GLUT_RGB);
    glutCreateWindow("mehran!");
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60,1,1,10);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
    glutMainLoop();
    }

  40. #280
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    خوی
    پست
    454

    نقل قول: آموزش OpenGL

    نقل قول نوشته شده توسط orache مشاهده تاپیک
    سلام داداش ببین تو که میگی هنوز اول کاری ! اخه نه اصلا از دوربین استفاده کردی نه از هیچی الان دقیقا هم منظورتو نفهمیدم چیه میخای 3 تا قوری بسازی که رو هم نیافتن ؟؟ یعنی با فاصله از هم ساخته بشن ؟؟ اینکه کاری نداره فکر کنم تو همون کتاب انگیسیه گفته بود
    بیا ببین منظورت همینه یا خیر
    #include <freeglut.h>
    void display () {
    glClear(GL_COLOR_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glPushMatrix();
    glTranslatef(0,0,-3);
    glutWireTeapot(1);
    glTranslatef(0,2,0);
    glutSolidTeapot(1);
    glPopMatrix();
    glTranslatef(0,-2,-1);
    glutSolidTeapot(1);
    glPopMatrix();
    glFlush();
    }

    void reshape ( int width, int height )
    {
    glViewport(0,0,width,height);
    }

    int main ( int argc, char * argv[] )
    {
    glutInit(&argc,argv);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(0,0);
    glutInitDisplayMode(GLUT_RGB);
    glutCreateWindow("mehran!");
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60,1,1,10);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);
    glutMainLoop();
    }
    دمت گرم داداش
    چیزی که می خواستم رو از روش پیدا کردم
    خیلی آقایی

صفحه 7 از 10 اولاول ... 56789 ... آخرآخر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •