ورود

View Full Version : سوال: نحوه ی کار open gl با mouse



angele
شنبه 31 اردیبهشت 1390, 19:38 عصر
میخواستم راجع به نحوه ی کار open gl با mouse اطلاعاتی بگیرم :کسی میتونه منو راهنمایی کنه؟در مورد توضیح دستوراتش.

pswin.pooya
یک شنبه 01 خرداد 1390, 09:33 صبح
میخواستم راجع به نحوه ی کار open gl با mouse اطلاعاتی بگیرم :کسی میتونه منو راهنمایی کنه؟در مورد توضیح دستوراتش.

OpenGL تنها يه كتابخونه سه بعدي گرافيكي هست و از موس ئشتيباني نميكنه. كتابخونه هاي ديگه مثل GLUT، SDL و GTK و يا APIهايي مثل win32 و يا x11 هستن كه امكان كار با ماوس رو فراهم ميكنن. اين مساله بستگي به اين داره كه شما از چه API استفاده ميكنين.

angele
یک شنبه 01 خرداد 1390, 11:24 صبح
OpenGL تنها يه كتابخونه سه بعدي گرافيكي هست و از موس ئشتيباني نميكنه. كتابخونه هاي ديگه مثل GLUT، SDL و GTK و يا APIهايي مثل win32 و يا x11 هستن كه امكان كار با ماوس رو فراهم ميكنن. اين مساله بستگي به اين داره كه شما از چه API استفاده ميكنين.

سلام دوست عزیز من منظورم کتابخونه های glut32.libو glut32.dll , glut.h هستش میشه دستوراتش رو برام توضیح بدین چطور با موس کار میکنه؟

pswin.pooya
یک شنبه 01 خرداد 1390, 20:37 عصر
توي آدرس زير يه pdf فارسي هست كه در مورد glut و OpenGL توضيح داده:

http://opengl.persiangig.com/page.html

rsheytoonak
دوشنبه 02 خرداد 1390, 17:42 عصر
عزیز یه کد برات میزارم امیدوارم کارت راه بیفته

void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_DOWN) {
// a=0;

else
a = 1;


}



button نوع کلید فشرده شده
state حالت کلید(فشار داده شده یا رها شده)
x , y هم که مکان نما هستن

angele
سه شنبه 10 خرداد 1390, 18:00 عصر
برای ماوس تابعی در نظر گرفته شده.که کلیک کردن ماوس را کنترل می کند..GLUTدر

این تابع به صورت زیر می باشد:

Void glutMouseFunc ( void (*func) (int bouttn,int state,int x,int y));


پارامتراین تابع کلیک کردن ماوس را پردازش می کنند.این تابع 4 پارامتر دارد:

1.پارامتر اول مشخص می کند که کدام دکمه ماوس فشرده شده یا رها می شود.که خود این پارامتر 3 حالت دارد:

GLUT_LEFT_BUTTON1.

GLUT_MIDDLE_BUTTON2.

GLUT_RIGHT_BUTTON3.

2.پارامتر دوم وضعیت دکمه ماوس را که فشردن یا رها شدن را مشخص می کند.که این پارامتر 2 حالت دارد:

GLUT-DOWN .1

GLUT-UP.2

در برنامه زیر تابعی تعریف کرده ایم که مشخص می کند که دکمه سمت چپ ماوس فشردن یا رها کردن است.در این تابع با فشردن دکمه سمت چپ رنگ قرمز فعال و در صورت رها شدن دکمه ماوس رنگ قرمز غیر فعال می شود.
Void mouse(int b,int s,int x, int y)
{
Switch(b) {
Case GLUT-LEFT-BUTTON;
If ( s==GLUT-DOWN )
r=1.0;
else
r=o.o;
break;
}
}


تشخیص حرکت ماوس
دو نوع تابع برای تشخیص حرکت ماوس در GLUT آمده.


1.void glutMotionFunc(void(*fuhnc)) (int x,int y));


2.void glutPassiveMotionFunc(void(*func))(int x,int y));

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


Void mouse(int b,int s,int x,int) {


If ( s==GLUT-DOWN ) OldX=x;


}


Void motion( int x,int y){


If(Old x – x < 0 ){


If(r < 1.0 ) r +=0.05;


}


else{


if (r > 0.0 ) r -=0.05;


}


OldX = x;


}