View Full Version : معرفی فایلهای کتابخانه ایی OPengl به VS
majid1605
پنج شنبه 19 آبان 1390, 22:31 عصر
من این سوال رو توی خیلی از فرمهای تخصصی پرسیدم ولی تا حالا کسی جواب درستو حسابی بهم نداده
توی VS 2010 چجوری میتونم پوشه های direct یا OpenGlرو بهش معرفی کنم.
توی قسمت Projects and Solutions و قتی روی VC++ Direction کلیک می کنم هیچ جایی واسه معرفی وجود نداره .
البته من الان فایلهای اصلی opengl رو هم به پروژه اضافه کردم ولی پیغام زیر رو میده .
کد:
LINK : fatal error LNK1181: cannot open input file 'opengl32.lib glu32.lib'
در مورد دایرکت هم همینطوره البته بیشتر می خوام رو opengl کار کنم ممنون میشم راهنمایی کنید
pswin.pooya
جمعه 20 آبان 1390, 00:33 صبح
1. برو Property Manager (تب كنار solution explorer)
2. شاخه پروژه رو باز كن (دو گزينه Debug و Release بصورت پيش فرض وجود داره)
3. حالا اگر روي هركدوم از اونها راست چپ كليك كني بعد منوي Properties رو انتخاب كني ميتوني دايركتوريها رو بيني.
يه سرچ انگليسي كافي بود.
majid1605
جمعه 20 آبان 1390, 01:06 صبح
دوست عزیز ممنون
البته من الان فایلهای اصلی opengl رو هم به پروژه اضافه کردم ولی پیغام زیر رو میده .
گفتم که فایل ها رو اضافه کردم ولی باز پیغام خطا میده
اینم قسمت include و lib
$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(Win dowsSdkDir)lib;$(FrameworkSDKDir)\lib;E:\m\Opengl\ Opengl Setup Files\glut\lib;E:\m\Opengl\Opengl Setup Files\oglsdk\lib
$(VCInstallDir)include;$(VCInstallDir)atlmfc\inclu de;$(WindowsSdkDir)include;$(FrameworkSDKDir)\incl ude;E:\m\Opengl\Opengl Setup Files\glut\include;E:\m\Opengl\Opengl Setup Files\oglsdk\include
قبلاض سرچ رو هم انجام دادیم کارهایی که گفته بودند رو هم انجام دادیم ولی کار نکرد.گفتیم بزاریم اینجا شاید اساتید بتونند کمک کنند.
pswin.pooya
جمعه 20 آبان 1390, 14:59 عصر
خب داخل همين فروم هم سرچ بزني اين سوال تا حالا 100 بار پرسيده شده. جواب:
#pragma comment(lib,"opengl32.lib")
همين رو هم ميشه توي همون VC++ Directories تعريف كرد. شما در حقيقت فايلهاي lib رو اضافه نكردي
majid1605
جمعه 20 آبان 1390, 21:26 عصر
ممنون
من همونطور که توی پست قبلی گفتم فایل ها رو توی VC++ Directories معرفی کردم ولی کار نمی کنه .می خوام بدونم چرا اونجوری کار نمی کنه.وگرنه میدونم میشه با pragma comment فایل ها lib رو به پروژه اضافه کردو خیلی هم راحتره
majid1605
یک شنبه 22 آبان 1390, 21:21 عصر
من توی پرژه از کد زیر واسه معرف هدر فایلها استفاده کردم
#include <windows.h>
#include <gl/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#pragma comment(lib,"OPENGL32.LIB")
#pragma comment(lib,"glut32.lib")
#pragma comment(lib,"GLU32.LIB")
#pragma comment(lib,"GLAUX.LIB")
ولی به این هدر فایل کامپایلر گیر میده
#include <GL/glut.h>
کسی میدونه مشکل چیه ؟ از VS 2010 استفاده می کنم.
Cannot open include file: 'GL/glut.h': No such file or directory
متن پیغام کامپایلر
می خوام بدونم این هدر فایل جداست کسی اون داره بهم بده یه سوال دیگه آخرین نسخه Opengl چنده منظورم کتابخونه است نه درایور و از کجا می تونم گیرش بیارم توی سایت اصلی چیزی نتونستم پیدا کنم
pswin.pooya
دوشنبه 23 آبان 1390, 01:15 صبح
ی خوام بدونم این هدر فایل جداست کسی اون داره
www.opengl.org
آخرین نسخه Opengl چنده منظورم کتابخونه است نه درایور
4.2 (البته OpenGL همراه درايورها عرضه ميشه)
از کجا می تونم گیرش بیارم توی سایت اصلی چیزی نتونستم پیدا کنم
باز هم در مورد اين موضوع بارها صحبت شده. از OpenGL 1.2 به بعد همه چي تحت دو موضوع الحاقي و توابع هسته مطرح شده. يعني شما ميتونيد امكانات (اكثرا تابع ) مورد نظر خودتون رو از درايور درخواست كنيد و اون هم از كارت گرافيكي درخواست كنه و يا اينكه خودش شبيه سازي كنه. موارد الحاقي لزوما وجود ندارن اما core بايد رعايت شه. مثلا هم nvidia و هم ATI زماني ميتونن ادعاي كار گرافيك با ساپورت OpenGL 4.2 رو داشته باشن كه بتونن تمامي موارد Core 4.2 رو پياده سازي بكنند. الحاقي ها (extensions) امكانات جانبي هستند كه بعضا ميتونن جزء هسته هاي ويرايش بالاتر باشند مثلا OpenGL 2.x ميتونه از شيدرهاي geometry كه داخل OpenGL 3.0 مطرح شدن به عنوان الحاقي استفاده كنه و يا nvidia براي يك ويژگي خاص كارت گرافيكيش ميتونه يه الحاقي جديد رو معرفي كنه.
کسی میدونه مشکل چیه ؟ از VS 2010 استفاده می کنم.
1
Cannot open include file: 'GL/glut.h': No such file or directory
كاملا مشخصه كه. ميگه نمي تونه فايل glut.h رو پدا كنه. لطفا كتابخونش رو از opengl.org دريافت كنيد و فايلهاش رو در محل مناسب قرار بديد يا براي VS اونها رو تعريف كنيد.
تمام سوالهايي كه داري ميپرسي كاملا و كاملا تكراري هستن (چه داخل اين فروم) و چه روي نت. با كوچكترين سرچي ميشه پيداشون كرد. 100 درصد هم توي دو سه جواب اول به نتيجه ميرسي. لطفا قبل از طرح سوال سرچ كنيد.
majid1605
دوشنبه 23 آبان 1390, 13:21 عصر
میشه بگید الان مشکل من چیه
majid1605
دوشنبه 23 آبان 1390, 18:17 عصر
#include <windows.h>
#include <gl/gl.h>
#include <GL/glu.h>
#include "glut.h"
#pragma comment(lib,"OPENGL32.LIB")
#pragma comment(lib,"glut32.lib")
#pragma comment(lib,"GLU32.LIB")
#pragma comment(lib,"GLAUX.LIB")
#include <math.h>
GLfloat d;
GLfloat p1x;
GLfloat p1y;
GLfloat p1z;
const int p1radius = 1;
const int p2radius = 0;
GLfloat p2x;
GLfloat p2y;
GLfloat p2z;
void collision (void) {
d = sqrt(((p1x - p2x) * (p1x - p2x)) + ((p1y - p2y) * (p1y - p2y)) + ((p1z - p2z) * (p1z - p2z)));
}
void pointz (void) {
glPushMatrix();
if (d <= p2radius + p1radius)
{
glColor3f(1, 0, 0);
}
else
{
glColor3f(0, 0, 1);
}
glBegin(GL_POINTS);
glVertex3f(p1x, p1y, p1z);
glEnd();
glPopMatrix();
glPushMatrix();
glColor3f(0, 1, 0);
glBegin(GL_POINTS);
glVertex3f(p2x, p2y, p2z);
glEnd();
glPopMatrix();
}
void display (void) {
glClearColor (0.0,0.0,0.0,1.0);
glClear (GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glPointSize(5);
collision();
pointz();
glutSwapBuffers();
}
void reshape (int w, int h) {
glViewport (0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (60, (GLfloat)w / (GLfloat)h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
}
void keyboard (unsigned char key, int x, int y) {
if (key=='q') {
p1z = p1z - 0.1;
}
if (key=='z') {
p1z = p1z + 0.1;
}
if (key=='w') {
p1y = p1y + 0.1;
}
if (key=='s') {
p1y = p1y - 0.1;
}
if (key=='a') {
p1x = p1x - 0.1;
}
if (key=='d') {
p1x = p1x + 0.1;
}
if (key=='i') {
p2y = p2y + 0.1;
}
if (key=='k') {
p2y = p2y - 0.1;
}
if (key=='j') {
p2x = p2x - 0.1;
}
if (key=='l') {
p2x = p2x + 0.1;
}
if (key==27) { //27 is the ascii code for the ESC key
exit (0); //end the program
}
}
int main (int argc, char **argv) {
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE); //set up the double buffering
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow ("A basic OpenGL Window");
glutDisplayFunc (display);
glutIdleFunc (display);
glutReshapeFunc (reshape);
glutKeyboardFunc (keyboard);//the call for the keyboard function.
glutMainLoop ();
return 0;
}
برنامه بالا توی پست 14 لینک زیر قرار داره
http://barnamenevis.org/showthread.php?209896-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-OpenGL
ولی توی کامپایلر من ارور میده
1>MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
1>d:\documents\visual studio 2010\Projects\opengl\Release\opengl.exe : fatal error LNK1120: 1 unresolved externals1>MSVCRT.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
1>d:\documents\visual studio 2010\Projects\opengl\Release\opengl.exe : fatal error LNK1120: 1 unresolved externals
pswin.pooya
دوشنبه 23 آبان 1390, 20:13 عصر
زمان ايجاد برنامه كنسول گزينه Empty Project رو بزن و تيك Precompiled headers رو بردار
يا اينكه اسم تابع main به به WinMain تغيير بده ئ هدر stdafx رو اضافه كن.
خطاي كامپايلر داره جيغ ميكشه كه مشكل چيه. ميگه كه نمي تونه نشانه winmain رو پيدا كنه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.