ورود

View Full Version : برنامه ها و مثال های OpenGL



amin1softco
یک شنبه 09 بهمن 1390, 20:40 عصر
این تاپیک برای این ایجاد شده که دوستان برنامه هایی که نوشتند چه مبتدی چه برنامه هایی که نکات جالبی داره را اینجا قرار بدند تا بقیه دوستان استفاده کنند. خلاصه بیشتر هدف آشنایی بیشتر با ابزار ها کتابخانه ها و نحوه استفاده از اون ها برای کاربران مبتدی تا حرفه ایی است.:تشویق: و بیشتر جنبه تمرینی داره تا مهارت بچه هاسنجیده بشه.
برای شروع من خودم می خوام یک کلاس مثل glui طراحی کنم تا مثلاً تکست باکس و این قبیل کمپوننت ها رو شبیه سازی کنه. کسی هم نظری داشت بگه:تشویق:

Sepehr M
یک شنبه 09 بهمن 1390, 22:21 عصر
آقا خیلی خوبه...من با opengl موافقم...شدیدا :لبخند:

یه مرجع کامل و قابل فهم و روان هم اگه واسه آموزشش داشته باشی که دیگه همه چی ردیفه...

ممنون...تاپیک خیلی خیلی خوبیه!!!

amin1softco
دوشنبه 10 بهمن 1390, 06:55 صبح
در این پست یکسری برنامه آموزشی قرار می دم که بدرد اساتید محترم می خوره برای آموزش توابع که در بیشتر اونها با کلیک کردن روی عدد تابع مورد نظر تغییراتش روی صحنه اعمال می شه و بیشتر توابع را هم توضیح داده :
81696
81697
81698
81699
81700


بچه ها پست اسپم ندید برنامه بگذارید و نکته بگید بازم مرسی :قلب:

amin1softco
دوشنبه 10 بهمن 1390, 06:59 صبح
81701
81702
تمام این برنامه ها در فایل های ضمیمه سورسش هست مشکلی بود خبر بدین....

amin1softco
سه شنبه 11 بهمن 1390, 08:34 صبح
یکی از برنامه هایی که بر و بچ هوش با اون سر و کار دارند پازل هشت و نوع پیشرفته تر اون مکعب روبیکه که توابه هیورستیکش رو با absolver بدست آوردند. و یکی از کارهای جالب مایکروسافت اینه که یک برنامه داره که با openGL اومده حل کردن این مکعب رو به نمایش گذاشته اطلاعات بیشتر (http://archive.msdn.microsoft.com/RubiksCubeSolver) سورس در فایل ضمیمه....

http://archive.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=RubiksCubeSolver&DownloadId=1323

amin1softco
چهارشنبه 12 بهمن 1390, 08:19 صبح
اول بگم که برنامه قبلی ایرانی ! آقای علی رفیعی برنامه مکعب روبیک رو نوشتند...
خوب یکی از چیزایی که همه به اون نیاز دارند یک سرپناهه در این برنامه می خواهیم به شما نشون بدیم با توابع ساده openGL چطوری می شه یک خونه نقلی جور کرد دست خانم بچه ها رو گرفت و رفت داخلش و از زندگی لذت برد....

http://blog.elyaski.com/wp-content/uploads/2010/07/screen2.png

این برنامه با زبان سی شارپ نوشته شده و قبل از اجرا نیاز به TAO داره... منبع (http://blog.elyaski.com/category/code-snippets/)
تمرین : تبدیلش کنید به زبان سی++:چشمک:

amin1softco
شنبه 15 بهمن 1390, 15:06 عصر
من می خوام یک برنامه طراحی کنم با سوکت ها (به قولی تحت شبکه) برای os ویندوز که مثلاً کنترلر یک توپ یکجا باشه و خودش در یک برنامه دیگه بعد این کنرلر بتونه توپ را کنترل کنه مثلاً باکلید های جهت نما بعد توپ در برنامه دیگه حرکت کنه البته این مثال بیشتر تریپش به برنامه های شبکه می خوره تا بازی ولی خوب باید چیزه جالبی در بیاد من از حالا شروع می کنم کسی خواست می تونه برنامه رو تحت لینوکس با سوکت های برکلی بنویسه:چشمک: فکر کنم چیزه جالبی بشه :دیییی

یکسری مثال بدرد بخور :
http://nccastaff.bournemouth.ac.uk/jmacey/RobTheBloke/www/opengl_programming.html

soroushp
یک شنبه 07 اسفند 1390, 21:26 عصر
دوستان اینم اولین تمرین من :قهقهه:
83356

83357

soroushp
شنبه 13 اسفند 1390, 19:55 عصر
سلام-این برنامه دوم هست ، امیدوارم مفید باشه:
83634
83635

amin1softco
چهارشنبه 24 اسفند 1390, 15:56 عصر
خوب نزدیک عید نوروز هستیم یک برنامه خیلی جالب دیدم که با نهنگ و سال 91 بی ارتباط نیست گفتم بزارم شاید مفید واقع بشه

http://s1.picofile.com/file/7328309779/shark.png

c++ & glut در حالت تمام صفحه بهترین کیفیت رو داره
منبع : http://www.opengl.org/wiki/Code_Resources

amin1softco
چهارشنبه 24 اسفند 1390, 17:13 عصر
یک مثال خیلی جالب دیدم در مورد قرار دادن یک قسمت فرم در mfc برای ترسیمات openGL که به نظرم خیلی خوبه
http://s2.picofile.com/file/7328279565/testmfcopengl.jpg


به دومین آموزش اپن جی ال خوش آمدید من تصمیم گرفتم در مورد این موضوع بنویسم چون فکر می کردم جالبه و دیدم که خیلی از افراد منتظر انجام چنین کاری هستند
پس چرا معطل کنیم. اون به سادگی یک پنجره داخلی در یک دایلوگ نرمال است که می شه در اون اشکال OPENGL رو ترسیم کرد از یک طرف شما OPENGL رو دارید و از طرف دیگه کنترل های استاندارد ویندوز را
اگر شما نمی تونید تصورش کنید به این پروژه (http://steinsoft.net/index.php?site=Programming/Projects/OpenGL/opengldialog) من نگاه کنید.
بگذارید سریع تر در این موضوع هیجان انگیز شیرجه بزنیم. ;)
نظریه کاملی در مورد صحبت کردن یک فرد وجود نداره. و خوبه...
همه چیز با یک پروژه جدید mfc شروع می شه.
یک پروژه جدید با استفاده از Mfc application wizard ایجاد کنید. گزینه سوم را انتخاب کنید یک برنامه dialog-based در پنجره های(dialog) زیر؟(بعدی) شما می تونید هرچیزی رو که می خواهید عملاً فعال/غیرفعال کنید و در این مورد زیاد مهم نیست.
شما حالا یک برنامه کوچیک mfc آماده باید داشته باشید. ما با چیزهای مهمه پروژه شما شروع می کنیم یک پنجره کوچیکOPENGL در گوشه.

یک پنجره OPENGL داخلی
اوکی شما الان پروژه کوچیک OPENGL خودتون رو دارید ولی ..بعدش چی؟ اول سریع ترین و راحت ترین چیز ;) ساخت dialog در dialog editor. وقتی پروژه ساخته شد این باید اولین چیزی باشه که شما در MSDEV می بینید. شما چطوری دایلوگ کوچیک خودتون رو می چینید بی ربطه.تنها چیزی که ما باید انجام بدیم ساخت یک تکست فیلده که در نگاه اول بی فایده به نظر می رسه. اما در واقع یک قالب برای پنجره OpenGL ما محسوب می شه. پنجره دقیقاً همان اندازه و موقعیت این کنترل استاتیک کوچک رو داره.
بعداً اگر شما بخواهید موقعیت یا اندازه پنجره را تغییر بدید شما نیازی به تغییر کد خودتون ندارید و فقط کافیه اندازه این تکست فیلد را تغییر بدید.

http://steinsoft.net/images/tutorials/opengl_dialog/dlg_editor.jpg

اینجا شما دایلوگی که من درست کردم را می بینید. اون داره فقط دوتا تکست فیلد و دو تا باتن در پایین. اینها در نظر گرفته شده تا نمایش بدند چگونه پنجره openGL با کنترل های استاندارد با هم کار می کنند. تنها کنترل مهم تکست فیلد پایینه گوشه چپه. اون هیچ نوشته ایی نداره و در واقع پنهانه.اوکی سپس یک تکست فیلد به دایلوگ اضافه کنید و در جایی که می خواهید پنجره openGL نمایش داده شود قرار دهید. اسمش مهم نیست اما اونو با ID_STATIC as MSDEV پیش فرض فراخوانی نکنید.ما بعداً نمی توانیم موقعیت و اندازه اون رو بدست بیاریم؟!. من به سادگی فراخوانیش می کنم ID_OPENGL_WINDOW. اون یک جعبه است من انتخابش کردم روی تصویر طرف چپ . caption فیلد را پاک کنید و مطمئن شوید که اون نامرئیه (Under properties > Behaviour, تیک حصوصیت Visible را بردارید).
بنابر این پس از این مرحله ساده ما یک دایلوگ کامل داریم و می تونیم به سمت کد نویسی حرکت کنیم. و یکمی کار سخت تر می شه... اما وحشت نکنید هنوز هم خیلی سخت نیست. کاری که ما باید اول انجام بدیم ساخت یک کلاس جدیده که از CWnd مشتق شده سپس پنجره کوچک openGL در پایین کادر خواهد بود. بنابراین یک کلاس جدید ایجاد کنید و COpenGLControl بنامیدش با CWnd به عنوان کلاس پایه .Click on Insert | New Class... , یا کاری شبیه این.
مراحل بعدی به این ترتیبه :
* Create the window * Create an OpenGL rendering context * Setup basic OGL things (viewport, state machine etc.)
بگذارید کد نویسی را شروع کنیم! اولین چیزی که به انجام آن بسیار نیاز است اضافه کردن متغیر ها و اشیاء به COpenGLControl است.
برای ساخت یک مکان رندرمحتوی OPENGL ما از OpenGLDevice استفاده خواهیم کرداز قسمت کد ها (http://steinsoft.net/index.php?site=Programming/Code/) شما می توانید از توابع خودتون برای ست کردن فرمت پیکسل ها یا کارهای دیگه استفاده کنید. اما من از این کلاس استفاده می کنم چون بسیار ساده است. این سه متغیر عبارتند از : OpenGLDevice openGLDevice (فراموش نکنید هدر ها رو اضافه کنید!), CClientDC* dc محتوای پنجره است و float rotation برای چرخش مثلث که ما قراره در این پنجره کوچک ترسیم کنیم.
این کد سازنده و مخرب کلاسه :
COpenGLControl::COpenGLControl()
{
dc = NULL;
rotation = 0.0f;
}

COpenGLControl::~COpenGLControl()
{
if (dc) //Only delete dc when really allocated
{
delete dc;
}
}
اولین مرحله بالا به سادگی انجام شد. اون انجام شده در Create(..) از COpenGLControl تابعی که ما الان ایجاد می کنیم. بنابراین اضافه کنید Create(CRect rect, CWnd* parent) به COpenGLControl.
این کدشه :
void COpenGLControl::Create(CRect rect, CWnd *parent)
{
//Register window class
CString className = AfxRegisterWndClass(
CS_HREDRAW | CS_VREDRAW | CS_OWNDC,
NULL,
(HBRUSH)GetStockObject(BLACK_BRUSH),
NULL);

//Finally create the window
CreateEx(
0,
className,
"OpenGL",
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
rect,
parent,
0);
}

در این تابع ما یک پنجره openGL کوچک ایجاد خواهیم کرد . آن دقیقاً همان اندازه مشخص شده با rect است. در ثانی اون یک کلاس فرزند از parent است که دایلوگ اصلی روی اونه. مرحله بعدی ساخت یک قسمت برای رندر کردن محتوی openGL است . این انجام می شه بوسیله دستگیره پیام message handler برای WM_CREATE . بنابراین دستگیره ایی برای این پیام اضافه می کنیم . و این کدشه :
int COpenGLControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;

dc = new CClientDC(this); //Get device context of window
openGLDevice.create(dc->m_hDC); //Create opengl rendering context
InitGL();

//DONE
return 0;
}
سپس یک دستگیره پیام اضافه می کنیم برای WM_SIZE در COpenGLControl. و ما OpenGL viewport را در اون تنظیم می کنیم. با این کد :
void COpenGLControl::OnSize(UINT nType, int cx, int cy)
{
CWnd::OnSize(nType, cx, cy);

if (cy == 0)
{
cy = 1;
}

glViewport(0,0,cx,cy);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

glOrtho(-1.0f,1.0f,-1.0f,1.0f,1.0f,-1.0f);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
اتفاق خاصی اینجا رخ نداده . viewport همانند یک پروجکشن متعامد(orthogonal projection) در نظر گرفته شده . اینم مثل تمام پروژه های OpenGL است.
تابع بعدی InitGL() است که وقتی پنجره ساخته شد فراخوانی می شه و این بهترین مکان برای آغازکردن چیزهای مرتبط با OpenGL است.شبیه نورها یا نگاشت بافت ها (texture mapping) .

void InitGL() را اضافه کنید به COpenGLControl.
کد:
void COpenGLControl::InitGL()
{
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}

یک کد خیلی ساده اینجاست. شما باید بدونید ما داریم اینجا چه کار می کنیم یا شما با کمی اشتباه در این مکان هستید;-). تابع بعدی در واقع تابعی است که سرانجام چیزهایی را روی صفحه ترسیم می کنه. اسمش void DrawGLScene(): است.
void COpenGLControl::DrawGLScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

//***************************
// DRAWING CODE
//***************************

//Rotate the triagle
glRotatef(rotation,0.0f,1.0f,0.0f);

glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(1.0f,-1.0f,0.0f);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-1.0f,-1.0f,0.0f);
glColor3f(0.0f,0.0f,1.0f);
glVertex3f(0.0f,1.0f,0.0f);
glEnd();

SwapBuffers(dc->m_hDC);
}

این تابع یک مثلث رنگی چرخان بوسیله درجه rotation به سادگی ترسیم می کنه.اون فراخوانی می کنه تابع بعدی رو. اون یک دستگیره پیام برای WM_PAINT که پیام های پنجره است که هر زمان فراخوانی می شوند پنجره باید رفرش (دوباره ترسیم) شود.
دستگیره COpenGLControl را اضافه اضافه کنید و کاملش کنید در کدزیر :
void COpenGLControl::OnPaint()
{
rotation += 0.01f;

if (rotation >= 360.0f)
{
rotation -= 360.0f;
}

/** OpenGL section **/

openGLDevice.makeCurrent();

DrawGLScene();

CWnd::OnPaint();
}
ابتدا ما rotation را آپدیت می کنیم بنابر این مثلثمون در واقع چرخیده و سپس ما DrawGLScene() را فراخوانی می کنیم که اون اشکال کوچیک را ترسیم می کنه. چیزی که اینجا خیلی مهمه فراخوانی openGLDevice.makeCurrent() است. این تابع اطمینان میده که قبل از ترسیم در پنجره محتوی دستگاه openGL (OpenGL device context)صحیح انتخاب شده .شبیه این که امکان داره ما بیش از یک مکان ترسیمی روی پنجره برای openGL داشته باشیم.
آخرین و پر اهمیت ترین دستگیره پیام WM_ERASEBKGND که اطمینان میده که صف پیام های دایلوگ سرریز نشده است.
WM_ERASEBKGND همیشه وقتی که پس زمینه باید پاک بشه فرستاده می شه به پنجره
این دستگیره رو اضافه کنید به این پیام به COpenGLControl و در کد زیر :
BOOL COpenGLControl::OnEraseBkgnd(CDC* pDC)
{
//we've erased it - at least we do so
return TRUE;
}

همه این ها برای COpenGLControl بود. کار این کلاس تمام شده. مرحله بعدی بروز رسانی کمی در کلاس پدرش (دایلوگ) است. اوکی بعدش آماده است.

کلاس دایلوگ The Dialog Class
چیزه زیادی برای انجام این کار باقی نمونده . فقط کمی کدنویسی و مقایسه با آخرین قسمت ,دشوارترین طاقت فرسا و کشنده, این یک باز کودکانه واقعی است... اول ما یک نمونه از کلاس COpenGLControl را به دایلوگ خودمون اضافه می کنیم . این را انجام بدید از کلاس دایلوگ خودتون (من فراخوانیش کردم اینجا COpenGLDialogDlg با COpenGLDialogDlg.h به عنوان هدر)
در این قطعه کد :
//In COpenGLDialogDlg.h
//..

//Very important
#include "OpenGLControl.h"

class COpenGLDialogDlg : public CDialog
{
//Other things..
//..
protected:
//Our instance of COpenGLControl
COpenGLControl openGLControl;

//..
};

حالا کلاس دایلوگ ما می شناسه نمونه را و ما می تونیم حر کت کنیم به سمت آخرین مرحله . این در OnInitDialog() از COpenGLDialogDlg که باید بطور خودکار بوسیله Mfc wizard انجام بشه .
اینجا ما پنجره OpenGL خودمون رو آماده کردیم و مکانی که در اون قرار میگیره رو مشخص کردیم.
آخرین قطعه کد برای امروز ... اینه:
BOOL COpenGLDialogDlg::OnInitDialog()
{
CDialog::OnInitDialog();

//.. OTHER THINGS ARE DONE ..
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);

// TODO

//Get Size and position of the template textfield we created
//before in the dialog editor
CRect rect;
GetDlgItem(IDC_OPENGL_WINDOW)->GetWindowRect(rect);

//Convert screen coordinates to client coordinates
ScreenToClient(rect);
//Create the OpenGL window using the size and set this dialog as parent
openGLControl.Create(rect,this);

return TRUE;
}

تمام شد! در این قطعه کد کوچیک شما می بینید چرا تکست فیلدی که قبلاً ایجاد کردیم خیلی مفیده. ما window-rect اونو گرفتیم . اندازه و مکانش روی صفحه و فراخوانی کردیم COpenGLControl::Create(..) با اون به عنوان پارامتر هاش GetDlgItem(IDC_OPENGL_WINDOW) که بر می کردونه یک اشاره گر از CWnd به این کنترل IDC_OPENGL_WINDOW. اگر یادتون باشه ما به قالب تکست فیلد یک نام دادیم و با اون بدون ایجاد یک نمونه جدید می تونیم بهش مراجعه کنیم و اطلاعاتش را بدست بیاریم.
حالا همه چیز انجام شده! پروژتون رو کامپایل کنید و شما یک پنجره داخلی کوچک OpenGL در دایلوگ استانداردتون خواهید داشت . بهترین چیز اینه که شما مجبور نیستید کدتون را بیشتر از این تغییر بدید اگر شما بخواهید حرکت بدید یا تغییر اندازه بدید پنجره openGL را شما می تونید این برنامه رو گسترش بدید. شما می تونید از این کد پایه برای ایجاد یک باکس اطلاعاتی تعاملی برای یکی از پروژه هاتون با یک لوگو پویا که بوسیله openGL ترسیم می شه استفاده کنید. بنابراین خیلی چیز ها ممکنه.
اگر شما سئوالات بیشتر یا نظر یا مشکلی شبیه این داشتید می تونید به سادگی برای من میل بزنید یا سئوالتون را در انجمن مطرح کنید. من سعی می کنم به اون ها پاسخ بدم. خوشحال می شم شما رو در کد نویسی و آموزش بعدی ملاقات کنم.

منبع + توضیحات بیشتر + دانلود : http://steinsoft.net/index.php?site=Programming/Tutorials/opengl_dialog

soroushp
شنبه 19 فروردین 1391, 23:19 عصر
85411
اینم یه تمرینه دیگه + جا داره از جناب amin1softco جهت راهنمایی ؛ تشکر ویژه کنم

amin1softco
یک شنبه 20 فروردین 1391, 23:25 عصر
85411
اینم یه تمرینه دیگه + جا داره از جناب amin1softco جهت راهنمایی ؛ تشکر ویژه کنم
من کمک خاصی نکردم ولی شما استعدادش رو دارید.
به نظرم می تونید خیلی پیشرفت کنید.

MMSHFE
پنج شنبه 24 فروردین 1391, 12:48 عصر
با سلام، من هم چند تا مقاله درباره OpenGL نوشتم و توی سایتم گذاشتم که خوشحال میشم نظر دوستان متخصص رو بدونم. لینک دریافت مقالات:
جلسه اول (http://ncis.ir/download-file-14.html)
جلسه دوم (http://ncis.ir/download-file-16.html)
جلسه سوم (http://ncis.ir/download-file-18.html)
جلسه چهارم (http://ncis.ir/download-file-23.html)
چلسه پنجم (http://ncis.ir/download-file-24.html)
جلسه ششم (http://ncis.ir/download-file-25.html)
جلسه هفتم (http://ncis.ir/download-file-78.html)
موفق باشید.

soroushp
پنج شنبه 24 فروردین 1391, 22:01 عصر
من ابتدای راه هستم اما به نظرم برای اونهایی که تاحالا برنامه نویسی opengl نکردند قابل فهم هست ، حداقل برای من که مفیده!

soroushp
شنبه 26 فروردین 1391, 19:24 عصر
85753
85754
این با d می چرخه و حرکتش هم با timerfunction هست.:چشمک:

soroushp
یک شنبه 03 اردیبهشت 1391, 11:39 صبح
اینم یک هلی کوپتر ساده که به کمک دوست عزیز amin و pouya طراحی شد

86116

soroushp
شنبه 16 اردیبهشت 1391, 22:29 عصر
اینم یک برنامه از فرکتال ، هرچند ابتدایی :

86709

86710

marijo0o0n
یک شنبه 07 خرداد 1391, 15:05 عصر
سلام و خسته نباشید
من درس گرافیک دارم درس راجع به مانیتورهای رنگی و ... بود حالا که به پایان ترم نزدیک شدیم استاد میگه باید
پروژه با opengl تحویل بدید:گریه:
من با opengl کار نکردم یک هفته بیشتر هم مهلت ندارم :گریه:
تورو خدا اگه کسی میتونه کمکم کنه ممنون میشم ازتون

یک رسم دایره که در زمان اجرا حرکت کنه

neda_1367_sh
یک شنبه 07 خرداد 1391, 15:37 عصر
سلام و خسته نباشید
من درس گرافیک دارم درس راجع به مانیتورهای رنگی و ... بود حالا که به پایان ترم نزدیک شدیم استاد میگه باید
پروژه با opengl تحویل بدید:گریه:
من با opengl کار نکردم یک هفته بیشتر هم مهلت ندارم :گریه:
تورو خدا اگه کسی میتونه کمکم کنه ممنون میشم ازتون

یک رسم دایره که در زمان اجرا حرکت کنه

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

soroushp
یک شنبه 07 خرداد 1391, 18:13 عصر
سلام و خسته نباشید
من درس گرافیک دارم درس راجع به مانیتورهای رنگی و ... بود حالا که به پایان ترم نزدیک شدیم استاد میگه باید
پروژه با opengl تحویل بدید:گریه:
من با opengl کار نکردم یک هفته بیشتر هم مهلت ندارم :گریه:
تورو خدا اگه کسی میتونه کمکم کنه ممنون میشم ازتون

یک رسم دایره که در زمان اجرا حرکت کنه

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

marijo0o0n
یک شنبه 07 خرداد 1391, 20:34 عصر
سلام ندا جون
نمیدونی چقدر خوشحال شدم من 23 /3 امتحان گرافیک دارم که باید تحویل بدم عزیزم
نمیدونم چجوری باید ازت تشکر کنم :بوس:

marijo0o0n
یک شنبه 07 خرداد 1391, 20:40 عصر
هدف این تاپیک هم همینه دیگه ، یکی از برنامه ها رو انتخاب کن و روش کار کن اگر سوالی داشتی بپرس

سلام این برنامه ها خیلی به نظرم یچیده است من یه چیز ساده تر می خواستم که بتونم روش کار کنم نه این برنامه ها

marijo0o0n
یک شنبه 07 خرداد 1391, 20:47 عصر
سلام ندا جون
نمیدونی چقدر خوشحال شدم من 23 /3 امتحان گرافیک دارم که باید تحویل بدم عزیزم
نمیدونم چجوری باید ازت تشکر کنم :بوس:

amin1softco
یک شنبه 07 خرداد 1391, 21:02 عصر
ب نظرم شما پیام نوری هستید!!! به تاپیک آموزش openGL (http://barnamenevis.org/showthread.php?209896-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-OpenGL) مراجعه کنید این برنامه داخلش هست.صفحه 5 فک کنم.

marijo0o0n
یک شنبه 07 خرداد 1391, 21:15 عصر
سلام نه خیر پیام نوری نیستم .ممنون از راهنماییت

soroushp
یک شنبه 07 خرداد 1391, 21:38 عصر
تا اونجایی که سواده من می رسه تو opengl میشه با 2 راه دایره کشید : 1- معادله دایره 2- توابع آماده
کدام مدنظره شماست ؟

marijo0o0n
یک شنبه 07 خرداد 1391, 21:41 عصر
تا اونجایی که سواده من می رسه تو opengl میشه با 2 راه دایره کشید : 1- معادله دایره 2- توابع آماده
کدام مدنظره شماست ؟

بله با این دو راه میشه دایره کشید .فرقی نمیکنه

soroushp
یک شنبه 07 خرداد 1391, 21:47 عصر
از اساتید محترم عذرخواهی می کنم ؛ برای حرکت دایره باید از تابع timerfuction استفاده کنی ، بقیه اش رو سعی کن خودت انجام بدی

// circle.c
// OpenGL SuperBible
// Demonstrates point, line, and polygon smoothing
// Program by Richard S. Wright Jr.
// System and OpenGL Stuff

#include <math.h>
#include <gl/glut.h>
#include <stdio.h>

#define SCREEN_X 800
#define SCREEN_Y 600
///////////////////////////////////////////////////
int edgeOnly=0;
void DrawCircle(double radius, int numberOfSides);

GLUquadricObj *qobj;
// Called to draw scene
void RenderScene(void)
{

GLfloat x = 700.0f; // Location and radius of moon
GLfloat y = 500.0f;
GLfloat r = 50.0f;
GLfloat angle = 0.0f; // looping variable

// Clear the window
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// Everything is white
glColor3f(1.0f, 1.0f, 1.0f);

// Draw the "moon"
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x, y);
for(angle = 0; angle < 2.0f * 3.141592f; angle += 0.1f)
glVertex2f(x + (float)cos(angle) * r, y + (float)sin(angle) * r);
glVertex2f(x + r, y);
glEnd();

//Draw the "ball"
glPushMatrix();
glTranslatef(390,117,0);
glColor3f(1,0,0);
edgeOnly=1;
DrawCircle(20, 6);
glPopMatrix();

//Draw the "sun"
glPushMatrix();
glTranslatef(100,500,0);
glColor3f(1,1,0);
edgeOnly=0;
DrawCircle(100, 200);
glPopMatrix();


// Draw distant horizon
glLineWidth(3.5);
glBegin(GL_LINE_STRIP);
glVertex2f(0.0f, 25.0f);
glVertex2f(50.0f, 100.0f);
glVertex2f(100.0f, 25.0f);
glVertex2f(225.0f, 125.0f);
glVertex2f(300.0f, 50.0f);
glVertex2f(375.0f, 100.0f);
glColor3f(1,1,1);
glVertex2f(460.0f, 25.0f);
glVertex2f(525.0f, 100.0f);
glVertex2f(600.0f, 20.0f);
glVertex2f(675.0f, 70.0f);
glVertex2f(750.0f, 25.0f);
glVertex2f(800.0f, 90.0f);
glEnd();

//glLineWidth(1.0);
//Draw the "minicircle1"
glPushMatrix();
glTranslatef(200,300,0);
glColor3f(1,0,0);
glutWireSphere(50,40,10);
glPopMatrix();

//Draw the "minicircle2"
glPushMatrix();
glTranslatef(300,300,0);
glColor3f(0.5,0,0);
glutSolidSphere(40,80,8);// why?
glPopMatrix();

//Draw the "minicircle3"
glPushMatrix();
glTranslatef(400,300,0);
glColor3f(1,1,1);
glutWireCone(30,20,8,10);
glPopMatrix();

//Draw the "minicircle4"
glPushMatrix();
glTranslatef(500,300,0);
glColor3f(1,1,1);
glutSolidCone(35,20,8,10);
glPopMatrix();

//Draw the "minicircle5"
glPushMatrix();
glTranslatef(600,300,0);
glColor3f(0,1,0);
glutWireTorus(0,40,10,6);
glPopMatrix();

//Draw the "minicircle6"
glPushMatrix();
glTranslatef(700,300,0);
glColor3f(1,1,0);
glutSolidTorus(8,40,5,600);// How?
glPopMatrix();

//Draw the "minicircle7"
glPushMatrix();
glTranslatef(200,200,0);
glColor3f(0,0,1);
qobj=gluNewQuadric();
gluQuadricDrawStyle(qobj, GLU_POINT);
gluSphere(qobj,45,80,10);
glPopMatrix();

//Draw the "minicircle8"
glPushMatrix();
glTranslatef(300,200,0);
glColor3f(0,0.5,0);
qobj=gluNewQuadric();
gluQuadricDrawStyle(qobj, GLU_LINE);
gluCylinder(qobj,45,30,10,8,20);
glPopMatrix();

//Draw the "minicircle9"
glPushMatrix();
glTranslatef(400,200,0);
glColor3f(0,0,0.5);
qobj=gluNewQuadric();
gluQuadricDrawStyle(qobj, GLU_FILL);
gluDisk(qobj,0,30,6,8);
glPopMatrix();

//Draw the "minicircle10"
glPushMatrix();
glTranslatef(500,200,0);
glColor3f(1,1,0.5);
qobj=gluNewQuadric();
gluQuadricDrawStyle(qobj, GLU_SILHOUETTE);
gluPartialDisk(qobj,0,50,60,8,0,325);
glPopMatrix();


// Swap buffers
glutSwapBuffers();
}

void DrawCircle(double radius, int numberOfSides)
{
int vertex;
// if edge only, use line strips; otherwise , use polygons
if(edgeOnly)
glBegin(GL_LINE_STRIP);
else
glBegin(GL_POLYGON);

// calculate each vertex on the circle
for ( vertex =0;vertex<numberOfSides;vertex++)
{
// calculate the angle of current vertex
// ( vertex # * 2 * PI ) / # of sides
float angle_c = (float) vertex * 2.0 * 3.14159 / numberOfSides;

// draw the current vertex at the correct radius
glVertex2f(cos(angle_c)*radius, sin(angle_c)*radius);

}

// if drawing edge only, then need to complete the loop with first vertex
if(edgeOnly)
glVertex2f(radius, 0.0);

glEnd();

}
// This function does any needed initialization on the rendering
// context.

void SetupRC()
{
//int i;

// Black background
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );

// Set drawing color to white
glColor3f(0.0f, 0.0f, 0.0f);
}

void ChangeSize(int w, int h)
{
// Prevent a divide by zero
if(h == 0)
h = 1;

// Set Viewport to window dimensions
glViewport(0, 0, w, h);

// Reset projection matrix stack
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

// Establish clipping volume (left, right, bottom, top, near, far)
gluOrtho2D(0.0, SCREEN_X, 0.0, SCREEN_Y);

// Reset Model view matrix stack
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutCreateWindow("My Moon");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
SetupRC();
printf("This program represents some methods for circle drawing\n");

glutMainLoop();

return 0;
}

این برنامه رو اجرا کن ببین ،

marijo0o0n
یک شنبه 07 خرداد 1391, 21:53 عصر
مسخره میکنی :لبخند: من که اولش گفتم بلد نیستم دیگه چرا ....

marijo0o0n
یک شنبه 07 خرداد 1391, 21:56 عصر
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
C:\Dev-Cpp\Makefile.win [Build Error] [Project1.exe] Error 1


ربطی به این برنامه نداره کلا هر برنامه ای داخلش اجرا میکنم این error ها رو میده؟برای چی هستش؟؟؟

soroushp
دوشنبه 08 خرداد 1391, 10:41 صبح
چند تا پست قبل جناب MMSHFE چند تا فایل آموزشی گذاشته کل اش رو دانلود کن ، حتما متوجه میشی

neda_1367_sh
دوشنبه 08 خرداد 1391, 21:16 عصر
بالاخره چی شد؟
تونستی؟
من با 1 راه خیلی ساده مینویسم که خودتم متوجه بشی.
کاش استاد ما هم انقدر ساده میگرفت.
امروز پروژه Open gl خودم failed شد نمیدونم چیکار کنم؟:گریه::گریه::گریه:

soroushp
دوشنبه 08 خرداد 1391, 21:21 عصر
بالاخره چی شد؟
تونستی؟
من با 1 راه خیلی ساده مینویسم که خودتم متوجه بشی.
کاش استاد ما هم انقدر ساده میگرفت.
امروز پروژه Open gl خودم failed شد نمیدونم چیکار کنم؟:گریه::گریه::گریه:
میشه از پروژت عکس بگیری ببینیم چه کردی ؟

neda_1367_sh
دوشنبه 08 خرداد 1391, 22:02 عصر
میشه از پروژت عکس بگیری ببینیم چه کردی ؟

پروژه خودمو میگی؟
میزارم تو پست بازی مسیر یابی با open gl

marijo0o0n
دوشنبه 08 خرداد 1391, 22:10 عصر
بالاخره چی شد؟
تونستی؟
من با 1 راه خیلی ساده مینویسم که خودتم متوجه بشی.
کاش استاد ما هم انقدر ساده میگرفت.
امروز پروژه Open gl خودم failed شد نمیدونم چیکار کنم؟:گریه::گریه::گریه:

اخی چرا؟
نه بابا من هر برنامه ای که اجرا می کنم ازم error میگیره حتی همین کد برنامه هایی که دوستان محبت کردن و برام ارسال کردن اجراشون میکنم خطا میگیره
ولی یه پروژه آماده که استاد خودش بهمون داد به عنوان نمونه اجرا میشه
نمیدونم باید چکار کنم

neda_1367_sh
دوشنبه 08 خرداد 1391, 22:22 عصر
اخی چرا؟
نه بابا من هر برنامه ای که اجرا می کنم ازم error میگیره حتی همین کد برنامه هایی که دوستان محبت کردن و برام ارسال کردن اجراشون میکنم خطا میگیره
ولی یه پروژه آماده که استاد خودش بهمون داد به عنوان نمونه اجرا میشه
نمیدونم باید چکار کنم
ببخشید ولی شما فایل های glut رو در مسیرهای مربوطه paste کرده اید؟
console application انتخاب میکنید؟
شرمنده چون گفتی بلد نیستی این سوالا رو میپرسم.

amin1softco
دوشنبه 08 خرداد 1391, 23:03 عصر
http://s3.picofile.com/file/7394041826/dev.zip.html
این فایل رو دانلود کنید یک فایل آموزشی + برنامه کامل dev برای اجرای glut است. فکر کنم مشکلتون رو برطرف کنه.

marijo0o0n
دوشنبه 08 خرداد 1391, 23:06 عصر
ببخشید ولی شما فایل های glut رو در مسیرهای مربوطه paste کرده اید؟
console application انتخاب میکنید؟
شرمنده چون گفتی بلد نیستی این سوالا رو میپرسم.

خواهش میکنم "اره به خدا تمام این کارا رو هم انجام دادم اون 3 تا فایل ها رو هم در درایو c مسیرهای خودشون کپی کردم
از project option اون 3 فایل رو انتخاب کردم :گریه:

neda_1367_sh
دوشنبه 08 خرداد 1391, 23:13 عصر
خواهش میکنم "اره به خدا تمام این کارا رو هم انجام دادم اون 3 تا فایل ها رو هم در درایو c مسیرهای خودشون کپی کردم
از project option اون 3 فایل رو انتخاب کردم :گریه:
1 نمونه برات میفرستم ببین اجرا میشه.

marijo0o0n
دوشنبه 08 خرداد 1391, 23:15 عصر
1 نمونه برات میفرستم ببین اجرا میشه.

ممنون باشه پروژه خودتون چی شد درستش کردی

neda_1367_sh
دوشنبه 08 خرداد 1391, 23:38 عصر
ممنون باشه پروژه خودتون چی شد درستش کردی
نه بابا این جا هم هیچ کس نیست کمک کنه:گریه:

marijo0o0n
دوشنبه 08 خرداد 1391, 23:58 عصر
http://s3.picofile.com/file/7394041826/dev.zip.html
این فایل رو دانلود کنید یک فایل آموزشی + برنامه کامل dev برای اجرای glut است. فکر کنم مشکلتون رو برطرف کنه.

خیلی ممنون ولی من همه این کارا رو انجام میدم ولی به قول شما این برای اجرای glut هست که من اونجا از console aplication استفاده میکنم

amin1softco
سه شنبه 09 خرداد 1391, 17:10 عصر
خوب حالا یک بار از glut استفاده کنید ببنید چی می شه امتحانش ضرری نداره
کنسول برای ویزال استادیو است در ضمن باید همین dev-cpp نصب بشه

roza20
جمعه 09 تیر 1391, 15:45 عصر
میشه ی نفر کمک کنه هیچکدوم از برنامه ها تو سیتم من اجرا نمیشه چیکار کنم؟

amin1softco
دوشنبه 29 آبان 1391, 11:00 صبح
میشه ی نفر کمک کنه هیچکدوم از برنامه ها تو سیتم من اجرا نمیشه چیکار کنم؟
به قسمت آموزش openGL مراجعه کنید .

95219

در این پست برنامه ربات بوسیله موتور فیزیک ODE و GLUT قرار میدهم که با این موتور می تونید تشخیص برخورد در حد خیلی خفن استفاده کنید در ضمن فایل های کامپایل شده .lib و .dll برای ویژوال اسادیو 2010 را از اینجا (http://s3.picofile.com/file/7559785157/compileODEvs2010.zip.html) دریافت کنید. و طبق معمول به کامپایلر خودتون معرفیشون کنید :دی یا اگر تمایل به کامپایل دارید به اینجا (http://ode-wiki.org/wiki/index.php?title=Manual:_Install_and_Use#Building_w ith_Premake) و مراحل را دنبال کنید بعداً بوسیله ویژوال استادیو فایل را به 2010 بصورت اتومات می شه ارتقاء داد.
برنامه ضمیمه شد.

amin1softco
چهارشنبه 01 آذر 1391, 14:22 عصر
ایجاد پنجره های شفاف بوسیله glut که این برنامه با کمک seganX کامل شد خیلی ازش ممنونم.
این خروجی بوسیله glut ایجاد شده .

95350

سورس برنامه ضمیمه شد...

samanegh
یک شنبه 08 بهمن 1391, 08:57 صبح
سلام دوستان من سوالی درباره بافت ها در opengl داشتم، من یک کد ساده نوشتم تا یک texture بر روی شکل کشیده شود و براساس کتاب و آنچه استادم گفته بودند پیش رفتم، برنام اجرا میشد اما هیچ بافتی بر روی چهارضلعی کشیده نمیشه؟ به نظر دوستان مشکل از کجای برنامه است؟void tarsim()
{
GLbyte *pImage;
GLint iWitdth,iHeight,iComponents;
GLenum eFormat;

/*GLfloat points[3]={{},{},{}
}*/
glEnable (GL_DEPTH_TEST );
glClear (GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT );
glColor3f (0.5,0.5,0);
pImage = gltReadTGABits ("texture_1340225762_001.tga",&iWitdth ,&iHeight ,&iComponents ,&eFormat );
glTexImage2D (GL_TEXTURE_2D ,0,iComponents ,iWitdth ,iHeight ,0,eFormat ,GL_UNSIGNED_BYTE ,pImage );
free (pImage );
glTexParameteri (GL_TEXTURE_2D ,GL_TEXTURE_MIN_FILTER ,GL_LINEAR );
glTexParameteri (GL_TEXTURE_2D , GL_TEXTURE_MAG_FILTER ,GL_LINEAR );
glTexParameteri (GL_TEXTURE_2D , GL_TEXTURE_WRAP_S , GL_CLAMP_TO_EDGE );
glTexParameteri (GL_TEXTURE_2D ,GL_TEXTURE_WRAP_T , GL_CLAMP_TO_EDGE );
glTexEnvi (GL_TEXTURE_ENV ,GL_TEXTURE_ENV_MODE ,GL_MODULATE );
glEnable (GL_TEXTURE_2D );
glBegin (GL_QUADS);
glTexCoord2d (1,0);
glVertex2f(-5,-2);
glTexCoord2d (0,0);
glVertex2f(8,-2);
glTexCoord2d (0,1);
glVertex2f(5,-9);
glTexCoord2d (1,1);
glVertex2f(-9,-9);
glEnd ();
glColor3f (1.0,0.5,0.2);
glRectd (3,6,0,3);
}

UfnCod3r
یک شنبه 08 بهمن 1391, 10:22 صبح
glGenTexture , glBindTexture که اصلا استفاده نکردی ! درضمن تو تابع ترسیم هر دفعه تکسچر لود نمی کنن ! :لبخندساده:

sanazy
پنج شنبه 12 بهمن 1391, 12:08 عصر
سلام کسی میتونه کمک کنه چجوری یه ابر بیضی تو فضای 3 بعدی میشه رسم کرد؟
و اینکه چطور میشه یه عکس رو روی یه بزیه بندازیم ؟ مرسی

mahvand
پنج شنبه 19 بهمن 1391, 17:56 عصر
glGenTexture , glBindTexture که اصلا استفاده نکردی ! درضمن تو تابع ترسیم هر دفعه تکسچر لود نمی کنن ! :لبخندساده:

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

amin1softco
جمعه 11 اسفند 1391, 11:34 صبح
آموزش شروع به کار با physx و openGL
http://www.devkast.com/2013/02/24/getting-started-on-physx-3-2-1-opengl/

amin1softco
شنبه 03 فروردین 1392, 09:53 صبح
در این پست می خواهم یک برنامه خیلی کاربردی به شما معرفی کنم که کسانی که با GLSL یا زبان سایه زنی openGL کار میکنند خیلی بدردشون می خوره و خیلی ساده می تونند شیدر های خودشون را طراحی و استفاده کنند و اگر خدا بخواهد آموزش های GLSL را در قسمت آموزش OpenGL قرار میدم این برنامه اسمش Shader Designer است.

زبان سایه زنی اپن جی ال یک زبان سایه زنی سطح بالا است که بر اساس سینتکس زبان برنامه نویسی سی بنا شده است که بوسیله هئیت نظارت بر معماری اپن جی ال (ARB) متشکل از شرکت های 3Dlabs, Apple, ATI, Dell, IBM, Intel, NVIDIA, SGI ایجاد شده تا به توسعه دهندگان کنترل مستقیم بیشتری روی خط لوله( pipeline ) گرافیک بدهد بدون اجبار در استفاده زبان اسمبلی ARB یا زبان سخت افزاری-خاص باشد .
با پیشرفت در کارت های گرافیک خصوصیات جدیدی برای افزایش انعطاف پذیری خط لوله رندر در سطح رأس [vertex] و قطعه [fragment] اضافه شد. برنامه نویسی در این سطح بوسیله استفاده از سایه زن های رأس [vertex] و قطعه [fragment] امکان پذیر شد. در اصل این قابلیت بوسیله نوشتن سایه زن ها در زبان اسمبلی ARB یک کار پیچیده و خشک بدست آمده بود . OpenGL ARB زبان سایه زنی اپن جی ال را ایجاد کرد تا روش با حس تری برای برنامه نویسی پردازنده کارت گرافیک (GPU) ایجاد نماید در عین حفظ مزیت استاندارد های باز که به openGL در طول تارخچه آن دیکته شده بود.

نحوه کار این شیدر های اینجوریه که این برنامه شما کامپایل می شه و به پردازنده کارت گرافیک تحویل داده می شود و افکت ها و انیمیشن ها ایجاد می گردد.
http://www.opengl.org/sdk/tools/ShaderDesigner/brics.jpg http://www.opengl.org/sdk/tools/ShaderDesigner/parallax.jpg http://www.opengl.org/sdk/tools/ShaderDesigner/texdialog.jpg http://www.opengl.org/sdk/tools/ShaderDesigner/linuxSD.jpgدانلود (http://www.opengl.org/sdk/tools/ShaderDesigner/ShaderDesignerSetup.exe)

صفحه دانلود (http://www.opengl.org/sdk/tools/ShaderDesigner/)

برای استفاده از شیدر در برنامه های خودتون می تونید GLee را include کنید .
لینک های مرتبط :
http://www.opengl.org/sdk/docs/tutorials/TyphoonLabs/
http://www.opengl.org/documentation/glsl/
کتاب نارنجی برای این سطح مناسب است .
OpenGL Shading Language, 3rd edition. ISBN 0-321-63763-1

amin1softco
شنبه 03 فروردین 1392, 10:46 صبح
یک سوالی که شاید برای خیلی ها پیش بیاد اینه که چطوری باید از قابلیت ها ی کارت گرافیک و مشخصات فنی و توانش مطلع بشیم برای این کار من دو تا نرم افزار پیشنهاد می کنم اولیش :
http://www.ozone3d.net/gpu_caps_viewer/images/gpu_caps_viewer_logo_w200_v2.jpg
http://s2.picofile.com/file/7700729565/GPU_Caps_Viewer_1_17_2.zip.html
دومی هم GLview است :
http://img30.imageshack.us/img30/5222/glview.png

http://www.realtech-vr.com/glview/

bloodymary
جمعه 10 خرداد 1392, 14:16 عصر
سلام
من چجوری می تونم یک عکس رو به یک سطح اضافه کنم؟!
مثلا بافت آجری بدم بهش؟!

elina.dr
پنج شنبه 02 آبان 1392, 15:49 عصر
سلام،دوستان من یه پروژه دارم تو همین مایه ها گفتن یه خونه و منظره رسم کنین با C# آشنایی ندارم کسی میتونه تبدیل شده ی این برنامه ب زبان C++ رو بنویسه؟ممنون

elina.dr
پنج شنبه 02 آبان 1392, 16:09 عصر
اول بگم که برنامه قبلی ایرانی ! آقای علی رفیعی برنامه مکعب روبیک رو نوشتند...
خوب یکی از چیزایی که همه به اون نیاز دارند یک سرپناهه در این برنامه می خواهیم به شما نشون بدیم با توابع ساده openGL چطوری می شه یک خونه نقلی جور کرد دست خانم بچه ها رو گرفت و رفت داخلش و از زندگی لذت برد....

http://blog.elyaski.com/wp-content/uploads/2010/07/screen2.png

این برنامه با زبان سی شارپ نوشته شده و قبل از اجرا نیاز به TAO داره... منبع (http://blog.elyaski.com/category/code-snippets/)
تمرین : تبدیلش کنید به زبان سی++:چشمک:



سلام،دوستان من یه پروژه دارم تو همین مایه ها گفتن یه خونه و منظره رسم کنین با C#‎ آشنایی ندارم کسی میتونه تبدیل شده ی این برنامه ب زبان C++‎ رو بنویسه؟ممنون

karaj.designer
شنبه 23 آذر 1392, 23:10 عصر
سلام
من توو محیط opengl میخوام یه دایره سه بعدی رسم کنم که توسط کلیدهای جهت دار کیبورد بالا پایین چپ راست بره.
2 روز دیگه باید تحویل بدم و هنوز هیچچچچچچچچچچچچچچ کاری نکردم.
دوستان و اساتید ،خواهش می کنم کمکم کنید:گریه:

xkapitanx
پنج شنبه 28 آذر 1392, 22:08 عصر
با سلام.
من میخواستم کدی بنویسم که توش بشه یک میز کاری رو طراحی کرد که کشاب داشته باشه و بشه تو محیط با کلید ها حرکت کرد.
کسی چنین مثالی داره؟
مثالی که بشه مدلشو با میز عوض کرد و بجاش یک مدل تو مثلا 3ds max یا maya ساخت بعد با اون مدل عوضش کرد؟(اصلا میشه مدل ساخته شده به برنامه منتقل کرد؟)
بنده وارد نیستم زیاد.
خواهشا راهنمایی کنید که چطور میتونم این کار رو بکنم؟؟
خواهشا اگر کسی اسکریپتی با این base داره بهم بده من فقط مدلشو عوض کنم؟
ممنون میشم اگر توضیح بدید

ahmaduse
چهارشنبه 18 دی 1392, 20:26 عصر
من یه مربع کشیدم میخوام دور خودش بچرخه (حول مرکز ) اما نمیشه میشه راهنمایی کنین؟

poneh asadi
پنج شنبه 11 اردیبهشت 1393, 21:40 عصر
سلام بچه ها به کمک فوری نیاز دارم
اگه بخوایم یه شکل از یه سمت که ناپدید میشه طرف مقابلش بیاد بیرون چه کدی باید بنویسیم؟؟؟؟؟؟؟

samadblaj
یک شنبه 14 اردیبهشت 1393, 11:39 صبح
با سلام ببخشید من نیاز به سورس پرچم ایران به زبان سی پلاس پلاس یا ائپن جی ال دارم خواهش میکنم دوستان کمک کنند یه شیرینی کوچیکم هدیش :چشمک:

samadblaj
جمعه 19 اردیبهشت 1393, 12:53 عصر
دوستان عزیز کسی پروژه ای در این حد نداره ؟!

amin1softco
جمعه 19 اردیبهشت 1393, 13:31 عصر
درس 11 nehe و http://www.opengl.org/discussion_boards/showthread.php/173298-waving-flag-not-waving را ببنید ایشالا رستگار میشید ;)

samadblaj
سه شنبه 23 اردیبهشت 1393, 15:01 عصر
ببخشید من نتونستم کاری کنم میشه خواهش کنم اگه امکانش هست یه پرچم ساده ایران رو فقط روی یه فرم opengl برام قرار بدید یه هدیه هم برای زحمتتون فقط امروزو فرست دارم مرسی

amin1softco
سه شنبه 23 اردیبهشت 1393, 18:09 عصر
اینم پرچم ایران فقط زود برش دار تا پویا نیومده ;) پروژه ویزوال 2013 کردم مشکلی داشتی فایل irflag.cpp را باز کن و به پروژه خودت کپی پیست کن ...

pswin.pooya
پنج شنبه 25 اردیبهشت 1393, 21:14 عصر
اینم پرچم ایران فقط زود برش دار تا پویا نیومده

??!!

داشتیم؟!

amin1softco
جمعه 26 اردیبهشت 1393, 08:20 صبح
??!!

داشتیم؟!

:تشویق::تشویق: شواهد گویاست ;)

mg_ho2003
یک شنبه 25 خرداد 1393, 19:48 عصر
چاپ مستطیل وفونت در opengl

با سلام در ++C با کمک opengl یک مستطیل چاپ کردم و فونت را با کمک تابع glbitmap-character جدا چاپ کردم حالا میخوام این 2 تا با هم در یک صفحه چاپ شود ولی بعد از ترکیب هر 2تا کد باهم فقط یکی چاپ میشود با هم در یک صفحه قرار نمیگیرد لطفا راهنمایی فرمایید .

الهام سیدنژادی
چهارشنبه 12 آذر 1393, 23:49 عصر
سلام
من یکمی مبتدی هستم تو opengl و استادمون ازمون خواسته که یک screensaver تو opengl طراحی کنیم. من در نظر دارم که یک عکس روی فرمم اضافه کنم بعد کارای متحرک سازی رو روی عکس انجام بدم اما هرچی گشتم نتونستم یاد بگیرم که چطور عکس رو پس زمینه قرار بدم لطفا کمکم کنید. اگه امکان داره زود چون به پایان ترم کم مونده :لبخندساده:

pswin.pooya
پنج شنبه 13 آذر 1393, 16:16 عصر
من یکمی مبتدی هستم تو opengl و استادمون ازمون خواسته که یک screensaver تو opengl طراحی کنیم. من در نظر دارم که یک عکس روی فرمم اضافه کنم بعد کارای متحرک سازی رو روی عکس انجام بدم اما هرچی گشتم نتونستم یاد بگیرم که چطور عکس رو پس زمینه قرار بدم لطفا کمکم کنید. اگه امکان داره زود چون به پایان ترم کم مونده :لبخندساده:

سلام
می تونید از نکسچرها (Texture) استفاده کنید.

http://www.opengl-tutorial.org/beginners-tutorials/tutorial-5-a-textured-cube/

الهام سیدنژادی
جمعه 14 آذر 1393, 13:13 عصر
خیلی ممنون همشهری

الهام سیدنژادی
جمعه 05 دی 1393, 15:00 عصر
سلام
این برنامه من هستش که یک ستاره هایی رو ایجاد میکنه با اون برنامه transparency که یکی از دوستان اینجا لود کرده بود قاطی کردم و این شد. حالا میخوام رنگ این ستارم هر دفعه تصادفی باشه و همچنین جاشونم عوضشه و تصادفی شه لطفا کمک کنید....
البته این فقط کد ترسیم یه ستارس اگه بگید چطور رنگ و جاشو تصادفی کنم تو بقیه هم اعمال میکنم

126897

الهام سیدنژادی
شنبه 06 دی 1393, 12:05 عصر
مرسی که هیشکی کمک نکرد :لبخند:
خودم به کمک دوستم حلش کردیم

kaarman
شنبه 21 شهریور 1394, 02:06 صبح
سلام دوستان
من تازه می خوام با openGL آشنا بشم...چنتا سوال داشتم... کسی هست جواب بده؟

sahar1394
جمعه 22 آبان 1394, 12:31 عصر
با سلام

دوستان یه مورد فوری برام پیش اومده.اگه راهنماییم کنید ممنون باشم.
من می خوام شفافیت در opengl ایجاد کنم.من 2 تا 6 ضلعی رسم کردم.که قسمتی از این دو شکل مشترک است.یکی رنگ آبی و زیری رنگ سبز.
من می خواهم شکل رویی شفاف باشه تا شکل زیری مشخص شود.
با جست و جو هایی که کردم فهمیدم باید از glColor4f با آلفا کار کنم.
ولی هرچه قدر اعداد آلفا را تغییر می دم.تغییری نمی کند

UfnCod3r
جمعه 22 آبان 1394, 15:42 عصر
با سلام

دوستان یه مورد فوری برام پیش اومده.اگه راهنماییم کنید ممنون باشم.
من می خوام شفافیت در opengl ایجاد کنم.من 2 تا 6 ضلعی رسم کردم.که قسمتی از این دو شکل مشترک است.یکی رنگ آبی و زیری رنگ سبز.
من می خواهم شکل رویی شفاف باشه تا شکل زیری مشخص شود.
با جست و جو هایی که کردم فهمیدم باید از glColor4f با آلفا کار کنم.
ولی هرچه قدر اعداد آلفا را تغییر می دم.تغییری نمی کند

کسی ک می خواد جی ال کار کنه اول باید جسجو کردنو یاد بگیره
باید اول الفا و مدل بلند کردنو مشخص کنی

Rainpc
جمعه 11 دی 1394, 21:37 عصر
سلام دوستان
خواهشن اگه کسی میتونه کمک کنه بهم خیلی نیاز به این برنامه دارم

برنامه اي بنويسيد که يک مکعب توليد کند سپس خاصيتي به آن اضافه کنيد که با زدن دکمه اينتر جلوه باز شدن مکعب اتفاق بيوفتد

CRbreeze
یک شنبه 13 دی 1394, 15:52 عصر
سلام دوستان
وقت همگی بخیر من یه پروژه دارم واسه درس گرافیک طراحی این شکل که میبینید و من فقط در حال حاضر رسم دایره و کلا اشکال هندسی رو بلدم...میشه کمک کنید که بدونم از کجا باید شروع کنم؟ ممنون میشم

http://uupload.ir/files/5985_untitled4_thumb.png (http://uupload.ir/viewer.php?file=5985_untitled4.png)

pswin.pooya
دوشنبه 14 دی 1394, 23:13 عصر
وقت همگی بخیر من یه پروژه دارم واسه درس گرافیک طراحی این شکل که میبینید و من فقط در حال حاضر رسم دایره و کلا اشکال هندسی رو بلدم...میشه کمک کنید که بدونم از کجا باید شروع کنم؟ ممنون میشم

GL_POINTS با دستور glBegin به جای GL_LINES یا ....

CRbreeze
دوشنبه 14 دی 1394, 23:37 عصر
GL_POINTS با دستور glBegin به جای GL_LINES یا ....

متشکرم :لبخندساده:

Rainpc
جمعه 02 بهمن 1394, 13:46 عصر
دوستان برنامه نویس یعنی هیچکی نیست جواب سوال منو بده یا راهنمایی کنه

اقا پولم بخواین میدم فقط کمکم کنید

این آدرس ایمیل من: rainpc@ymail.com

3pid71
پنج شنبه 09 اردیبهشت 1395, 12:38 عصر
سلام به همگی


دوستان ممنون میشم به این تاپیک سر بزنید.اگر کسی ایده ای داره خوشحال میشم بشنوم (مرتبط با OpenGL)


http://barnamenevis.org/showthread.php?103584-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%DA%AF%D8%B1%D8%A7%D9%81%DB%8C%DA%A9-%D8%AF%D8%B1-C-%D9%88-C&p=2317717&viewfull=1#post2317717

خاطره گلی
یک شنبه 02 خرداد 1395, 06:55 صبح
سلام من یه تحقیق حداقل 30 صفحه ای راجع به پیاده سازی یک صحنه متحرک با استفاده از opengl در دلفی میخواستم تو رو خدا کمکم کنید

خاطره گلی
یک شنبه 02 خرداد 1395, 06:56 صبح
سلام من یه تحقیق حداقل 30 صفحه ای راجع به پیاده سازی یک صحنه متحرک با استفاده از opengl در دلفی میخواستم تو رو خدا کمکم کنید
اگه کسی داشته باشه واقعا لطف کرده در حقم برا استاد میخوام.این ایمیلمه دوستان کمک کنید

خاطره گلی
یک شنبه 02 خرداد 1395, 07:00 صبح
سلام من یه تحقیق حداقل 30 صفحه ای راجع به پیاده سازی یک صحنه متحرک با استفاده از opengl در دلفی میخواستم تو رو خدا کمکم کنید
اگه کسی داشته باشه واقعا لطف کرده در حقم برا استاد میخوام.این ایمیلمه دوستان کمک کنید اینم جیمیلم khghiyasvand@gmail.com:گریه::گریه:

m.arash1360
یک شنبه 07 خرداد 1396, 22:32 عصر
سلام دوستان-من در داخل یک دایره دو تا ماهی برخلاف هم ترسیم کردم.حالا میخام که اینها برخلاف هم حرکت کنن و به هم برخورد و از هم عبور کنند و بالعکس.حرکتش رو نمیدونم.کسی اگر بلده راهنمایی م کنه اینم ایمیل من (moarash2004@yahoo.com).ممنون.اینم کدی که من نوشتم

#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
#include <math.h>

int Height = 400, Width = 400;
#define edgeOnly 0
void DrawCircle(double radius, int numberOfSides)
{
// if edge only, use line strips; otherwise , use polygons
if (edgeOnly)
glBegin(GL_LINE_STRIP);
else
glBegin(GL_POLYGON);
// calculate each vertex on the circle
for (int vertex = 0; vertex < numberOfSides; vertex++)
{
// calculate the angle of current vertex
// ( vertex # * 2 * PI ) / # of sides
float angle_c = (float)vertex * 2.0 * 3.14159 / numberOfSides;
glColor3f(0, 0, 1); // Blue Color
// draw the current vertex at the correct radius
glVertex2f(cosf(angle_c)*radius, sinf(angle_c)*radius);
}
// if drawing edge only, then need to complete the loop with first vertex
if (edgeOnly)
glVertex2f(radius, 0.0);
glEnd();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
DrawCircle(1.0, 1000);
glColor3f(1, 1, 0);
glBegin(GL_POLYGON);
glVertex2f(0.8, 0.15);
glVertex2f(0.85, 0.2);
glVertex2f(0.95, 0.15);
glVertex2f(0.85, 0.10);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.8, 0.5, 0.0);
glVertex2f(0.93, 0.15);
glVertex2f(0.98, 0.19);
glVertex2f(0.98, 0.11);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.8, 0.5, 0.0);
glVertex2f(0.855, 0.2);
glVertex2f(0.925, 0.25);
glVertex2f(0.87, 0.15);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(0.8, 0.5, 0.0);
glVertex2f(0.857, 0.1);
glVertex2f(0.925, 0.05);
glVertex2f(0.87, 0.15);
glEnd();

glColor3f(0.0, 0.0, 0.0);
glPointSize(4.0);
glBegin(GL_POINTS);
glVertex2f(0.83, 0.165);
glEnd();
///
glColor3f(0.0, 1.0, 0.0);// fish left
glBegin(GL_POLYGON);
glVertex2f(-0.8, 0.15);
glVertex2f(-0.85, 0.2);
glVertex2f(-0.95, 0.15);
glVertex2f(-0.85, 0.10);
glEnd();
glBegin(GL_TRIANGLES);
glVertex2f(-0.93, 0.15);
glVertex2f(-0.98, 0.19);
glVertex2f(-0.98, 0.11);
glEnd();


glBegin(GL_TRIANGLES);
glColor3f(0.8, 0.5, 0.0);
glVertex2f(-0.855, 0.2);
glVertex2f(-0.925, 0.25);
glVertex2f(-0.87, 0.15);
glEnd();

glBegin(GL_TRIANGLES);
glColor3f(0.8, 0.5, 0.0);
glVertex2f(-0.857, 0.1);
glVertex2f(-0.925, 0.05);
glVertex2f(-0.87, 0.15);
glEnd();

glColor3f(0.0, 0.0, 0.0);
glPointSize(4.0);
glBegin(GL_POINTS);
glVertex2f(-0.83, 0.165);
glEnd();

glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(Width, Height);
glutCreateWindow("Fish");
glutDisplayFunc(display);
glutMainLoop();
}