PDA

View Full Version : رسم خط با ماوس در Opengl



mg_mahyar
پنج شنبه 29 اسفند 1387, 18:14 عصر
سلام من میخوام یک برنامه بنویسم که توش بشه چند خط رو با ماوس رسم کرد و دایره و اشکال ابتدای رو در ضمن با Opengl باشه . و با c++
توی 100 صفحه اول انجمن رو خوندم فقط یک مورد در رابطه با Open gl بود که برای من فایده نداشت.
من کلا نمیدونم چی کار کنم. برنامه نوشتنش مشکلی نداره ولی مشکل اینه کار نمیکنه هدر فایلا غلطه و این ارورا مربوط به نبودن تابع



//fGL.cpp file

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "fGL.h"
#include <gl/gl.h>
#include <gl/glu.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TGLV *GLV;
//---------------------------------------------------------------------------



,

gheraphic.h

مشکل کجاست فایلی باید اضافه بشه؟ در مورد آخری توی انجمن یه هدر فایل دادید ولی بقیه چی؟ اونا هم باید فایل توی برنامه ریخته بشه؟ ی توضیح جامع در این ورد بدید.
بهتر بگم. میخوام یه برنامه به زبان pen GL رو که نوشتم اجرا کنم.

Nima_NF
جمعه 30 اسفند 1387, 12:09 عصر
دوست عزیر نمی دانم چقدر در مورد OpenGl اطلاع دارید ولی اگر هدف شما طراحی اشکال گرافیکی هست از طریق OpenGL به همین راحتی نیست که شما یک تابع را فراخوانی کنید و آن برای شما اشکال را رسم کند، کار و دردسر طراحی با OpenGl فراتر از این حرف ها است و برای مباحث گرافیک دوبهدی و سه بعدی پیشرفته تر هست. باید با نقاط و معادلات ریاضی اشکال را بسازید... این سایت برای نمونه (http://basic4gl.wikispaces.com/2D+Drawing+in+OpenGL)
برای اشکال گرافیکی در سطح applicaton برای ویندوز باید از GDI یا +GDI استفاده کنید.

در هر حال فرض می کنم که شما اطلاع کامل از OpenGL و کارآیی آن دارید، برای اجرای بی دردسر فقط کافیست اخرین نسخه کامپایلرهای جدید مانند ++visual C را بگیرید سایر کتابخانه های مورد نیاز در ویندوز و در داخل کامپایلر وجود دارد.فقط باید کتابخانه ها را به لینکر کامپایلر اضافه کنید تا آن ها را بشناسد مثلا این سه مورد را : OpenGL32.lib و GLu32.lib و GLaux.lib

وقتی پروژه win32 project ساختید،به منوی project بروید، سپس properties و linker در قسمت add dependencies سه مورد فوق را اضافه کنید.

(احیانا در صورت نداشتن هر کدام از این موارد، از سایت خودشان کتابخانه آن ها را دانلود کنید.)

توضیحات و نحوه اماده سازی پروژه برای OpenGL در لینک زیر به طور کامل وجود دارد:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01
در پایان همان صفحه سورس کد پروژه آماده شده برای همه کامپایلرها وجود دارد.

و درس دوم آن رسم اشکال ساده:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=02

ضمنا سورس کدی که قرار دادید و در آن از TForm استفاده شده است یک پروژه برای کامپایلر جدید C++builder هست.

mg_mahyar
جمعه 30 اسفند 1387, 18:08 عصر
آقا مشکل من رسم شکل و آشنایی با توابع نیست اونا توئی کتاب نوشته چی به چیه فقط نمیتونم کامپایلرم رو چک کنم.
من ویژوال استدیو 2008 نصب کنم حله؟ یا باید کار دیگم بکنم؟ اصلا چه نوع فایلایی باید توی هدر فایلم اضافه بشن؟ همشونو میخوام. در ضمن توی خود Help چیزی در این مورد نیست.

Nima_NF
شنبه 01 فروردین 1388, 01:38 صبح
openGL محصول کامپایلرها نیست، فقط کتابخانه های آن همراه کامپایلرها و داخل ویندوز هست. فعلا اکثر کتابخانه هایی که شما نیاز دارید در کامپایلرها هست.
این که چه هدر فایلی و چه فایلی را باید به لینکر اضافه کنید بستگی به این دارد که از چه نسخه ای از OpenGL استفاده می کنید و از چه امکاناتی استفاده می کنید.
اگر دنبال مرجع آن می گردید به خود سایت رسمی باید مراجعه کنید:

www.opengl.org (http://barnamenevis.org/forum/www.opengl.org)

اگر از روی کتاب خاصی مطالعه می کنید باید در آن این موارد توضیح داده شده باشد، برای مثال نحوه اضافه کردن فایل های lib را گفتم. مثلا برای gl/glu.h همان GLu32.lib و ....
به همین شکل اگر از توابع خاصی استفاده می کنید با مطالعه کتاب باید یاد بگیرید که آن تابع در کدام هدر فایل .h قرار دارد.

mg_mahyar
دوشنبه 03 فروردین 1388, 21:29 عصر
ببخشید دوباره مزاحم شدم:
من الان یه برنامه کوچیک دارم میخوام اجرا کنم کامپایلر من Microsoft Visual Studio2005 هست . تیکه برنامه من به زبان OPENGL رو این زیر میزارم.



glBegin (GL_TRIANGLES);
glVertex (0,0,0);
glVertex (1,1,0);
glVertex (2,0,0);
glEnd ();


حالا اگر امکانش هست هر چی کم داره بهش اضافه کنید تا کدی که اینجا هست رو من توی کامپایلرم کپی کنم و اجرا بشه. منظورم هدر فایلا هست . و بقیه موارد. در ضمن من میتونم از خود دستورات ++C توی این برنامه استفاده کنم؟ نثلا اول بنویسه

cout<<"this is Open gl";
بعدش اون تیکه برنامه بالا اجرا بشه. البته میدونم والم مسخره بود ولی خواهش میکنم جوابشو بهم بگید چون توی همین مشکل دارم:اشتباه::عصبانی++:

Nima_NF
دوشنبه 03 فروردین 1388, 23:59 عصر
خوب پس حدس من درست بود، پست اول من را دوباره مطالعه کنید! لینک های آن را هم همین طور...

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

ابتدا پنجره ساخته شود (تحت ویندوز نه کنسول) یعنی شما باید با استفاده از win32 یا GLUT یا هر شکل دیگر یک پنجره برای خود بسازید. سپس پس زمینه پنجره توسط OpenGL رندر شود، و مقداردهی های اولیه OpenGL مانند ایجاد صفحه Perspective و غیره ... هر وقت DC خطایی داد یا باید reset شود باید خودتان کد مربوط را بنویسید، تغییر دادن بخش پردازش پیام ها و ده ها مورد دیگر...

بنابراین پنجره شما OpenGl می شود، پس توابع کنسولی دیگر برایش معنایی ندارد، برای نوشته ها و کیبرد و موس و ... باید از توبع مخصوص OpenGL استفاده کنید مثلا wglUseFontBitmaps برای نوشتن در پنجره.

درس اول برای شروع کار را کامل از این لینک مطالعه کنید (http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01)

mg_mahyar
سه شنبه 04 فروردین 1388, 00:25 صبح
ساخت یک پنجره و نمایش مثلا یک مربع در OpenGL بیش از 100 خط کد نیاز دارد! (و نیارمند آشنایی با ریاضیات و ماتریس ها و غیره)
بدون مطالعه کتاب یا مرجع مناسب حتی قادر به ساختن یک پنجره خالی هم نخواهید بود.


اینا رو ببینید جالبه نمیدونم چه ایرادی داره وقتی مطلبی رو بلدی نیستیم بگیم نمیدونم. :چشمک:
این از پنجره خالی که قادر به ساختنش بودم.
http://i42.tinypic.com/o91mqt.gif


جای اینکه منو مسخره کنید لطفا راهنمایی کنید اگرم بلد نیستید منو گیج نکنید خواهشا.
:بوس:


//fGL.cpp file
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "fGL.h"
#include <gl/gl.h>
#include <gl/glu.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TGLV *GLV;
//---------------------------------------------------------------------------
__fastcall TGLV::TGLV(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TGLV::FormCreate(TObject *Sender)
{
int pf;
hDC = GetDC(Handle);
memset(&pfd, 0, sizeof(pfd));
pfd.nSize = sizeof(pfd);
pfd.nVersion = 1;
pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 32;
pf = ChoosePixelFormat(hDC, &pfd);
if (pf == 0) { MessageBox(NULL,
"ChoosePixelFormat() failed: Cannot find a suitable pixel format.", "Error", MB_OK); return; }
if (SetPixelFormat(hDC, pf, &pfd) == FALSE) {
MessageBox(NULL, "SetPixelFormat() failed: Cannot set format specified.", "Error", MB_OK);
return;
}
DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
hRC = wglCreateContext(hDC);
wglMakeCurrent(hDC, hRC);
ReleaseDC(hDC, Handle);
GLInit();
}
//---------------------------------------------------------------------------
void TGLV::GLInit()
{
//LIGHTING
float ambience[] = { 0.75, 0.75, 0.75, 1.0};
float lightpos[] = {3.0, 3.0, 3.0, 1.0 };
glMaterialf(GL_FRONT, GL_SHININESS, 75.0);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambience);
glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
//DRAWING
glClearColor(0.0, 0.0, 0.0, 1.0);
glClearDepth(100.0);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
}
//---------------------------------------------------------------------------
void __fastcall TGLV::FormResize(TObject *Sender)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(20.0f, (float)ClientWidth/(float)ClientHeight, 0.1f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glViewport(0.0, 0.0, ClientWidth, ClientHeight);
}
//---------------------------------------------------------------------------
void __fastcall TGLV::FormPaint(TObject *Sender)
{
DrawScene();
}
//---------------------------------------------------------------------------
void TGLV::DrawScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0,0,3, 5,5,1, 0,0,1);
glPushMatrix();
glTranslatef(5,5,0);
Box();
glPopMatrix();
glFinish();
SwapBuffers(wglGetCurrentDC());
}
//---------------------------------------------------------------------------
void TGLV::Box()
{
float clr[] = {1,0,0,1};
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, clr);
glColor4fv(clr);
glBegin(GL_QUADS);
glNormal3f(1,0,0);
glVertex3f(1,0,0);
glVertex3f(1,1,0);
glVertex3f(1,1,1);
glVertex3f(1,0,1);
glNormal3f(-1,0,0);
glVertex3f(0,0,0);
glVertex3f(0,0,1);
glVertex3f(0,1,1);
glVertex3f(0,1,0);
glNormal3f(0,1,0);
glVertex3f(0,0,0);
glVertex3f(1,0,0);
glVertex3f(1,0,1);
glVertex3f(0,0,1);
glNormal3f(0,-1,0);
glVertex3f(0,1,0);
glVertex3f(0,1,1);
glVertex3f(1,1,1);
glVertex3f(1,1,0);
glNormal3f(0,0,1);
glVertex3f(0,0,1);
glVertex3f(1,0,1);
glVertex3f(1,1,1);
glVertex3f(0,1,1);
glNormal3f(0,0,-1);
glVertex3f(0,0,0);
glVertex3f(0,1,0);
glVertex3f(1,1,0);
glVertex3f(1,0,0);
glEnd();
}


خطایی که میده اینه پنجره خالی بز میکن ه حتما یه سری از دستورات رو نمیشناسه. من یه نمونه کوچیک گفتم توی پست قبلی. و یه سوال کردم. قرار نست به رخ هم بکشیم اطلاعاتمون رو . به هم باید کمک کنم.
this projet i s out of date
حالا اگر میتونید بگید ایراد کار کجست؟ من باید فایلی اضافه کنم؟ یا هدر فایل؟

mg_mahyar
دوشنبه 10 فروردین 1388, 01:40 صبح
من یک برنامه میخوام که با visual studio 2005 اجرا بشه. و به زبان Opengl باشه. کامل باشه فقط و سادهدر حد رسم یک نقطه یا یک خط فقط به ++c باشه و با اون ورژن ران بشه. اگرم کتابخانه ای باید اضافه بشه بگید. در ضمن به کامپایلر و زبان دیگرم نباشه. الان 15 روزه الافم اگر کسی بلده کمک کنه. خواهشا نصیحت نکنید فقط یک برنامه یا |زوژه بدید.

Nima_NF
دوشنبه 10 فروردین 1388, 02:55 صبح
اینا رو ببینید جالبه نمیدونم چه ایرادی داره وقتی مطلبی رو بلدی نیستیم بگیم نمیدونم.
جای اینکه منو مسخره کنید لطفا راهنمایی کنید اگرم بلد نیستید منو گیج نکنید خواهشا.باید یاد بگیریم وقتی سوالی می کنیم و افراد دیگر وقت می گذارند و به ما جواب می دهند حداقل آن ها را بخوانیم. فکر می کردم به سوالات شما پاسخ دادم... در حالی که شما برگشتید و می گویید اگر بلد نیستی .... به دور از انصاف بود...
با این حال همچنان این اجازه را به خودم نمی دهم که بخواهم کسی را بابت ندانستن مسخره کنم.
ضمنا می توانید به تاپیک گرافیک که به صورت اعلان در همین بخش است نیز بروید، در آنجا مثال های اولیه win32 برای ساخت پنجره را نیز گفته ام، در بخش VC++ نیز یک آموزش مقدماتی دیگر به صورت اعلان وجود دارد.


سوالات شما و پاسخ های داده شده من:

1- در پست اول (و همین طور آخر خود) یک نمونه کد گذاشتید که بالای آن نوشته vcl.h و داخلش از TForm استفاده کرده است، من هم همان ابتدا به شما جواب دادم:


سورس کدی که قرار دادید و در آن از TForm استفاده شده است یک پروژه برای کامپایلر جدید C++builder هست.
پس این شیوه VCL تنها در نسخه های جدید تحت ویندوز C++builder borland وجود دارد (ساخت پنجره و غیره) و این کد توسط ++Visual C قابل کامپایل نیست. پس دستورات را هم نمی شناسد.

-------------------------
2- گفتید یک برنامه ساده با ++visual C و OpenGL معرفی کنید که با ++visual C کامپایل شود و بنده هم چند تا لینک معرفی کردم و گفتم در پایان آن ها پروژه و سورس کد zip شده برای ++Visual C در انتهای همان لینک ها برای دانلود هست.
فقط دقت کنید پروژه هایی که در سایت http://nehe.gamedev.net هست به یک کتابخانه قدیمی GLAUX نیز نیاز داردو پس وارد سایت شوید در سمت چپ GLaux Replacement وجود دارد، کلیک کرده و آن را دانلود کنید و به کامپایلر اضافه کنید.


در هر صورت اگر این کار برایتان سخت هست، از سورس کدهایی استفاده کنید که مستقیم از win32 استفاده کند و دیگر نیاز نباشد از هیچ کتابخانه جانبی دیگری استفاده کنید، یعنی با همه کتابخانه های openGL که در ++visual C هست.پس به لینک زیر بروید و مثال ها را دانلود کنید:
http://www.opengl.org/resources/code/samples/win32_tutorial/
در این پروژه ها به کتابخانه GLAUX نیاز نیست.

نحوه کامپایل برای مثال فوق در ++VC:
- یک پروژه win32 project خالی (empty) بسازید (console نسازید) و سپس یکی از فایل دانلود شده فوق را به پروژه اضافه کنید.
- در حالی که پروژه باز هست از منوی project گزینه properties را انتخاب کنید، به بخش linker و سپس Input بروید در قسمت Additional Dependencies این دو فایل lib را وارد کنید با فضای خالی بین آنها:



opengl32.lib glu32.lib

ضمنا پروژه را برای visual C++2005 آماده کردم و برایتان Zip کردم که می توانید از پایین دانلود کنید.

-------------------------
3- چند مرتبه پرسیدید چه هدر فایل هایی را باید اضافه کنم:
با توجه به مطالب فوق، همواره خودتان باید بدانید از چه کتابخانه هایی دارید استفاده می کنید و اگر آن ها همراه کامپایلر نیستند، خودتان باید آن ها را از سایت خودشان دانلود کنید و به کامپایلر اضافه کنید.
در مثال فوق که با win32 هست این چند مورد ضروری هست:



#include <windows.h> // For win32
#include <GL/gl.h>
#include <GL/glu.h>

mg_mahyar
دوشنبه 10 فروردین 1388, 04:10 صبح
http://www.opengl.org/resources/code/samples/win32_tutorial/

ببخشید مشکل من وسیع تر از اونه که فکر میکنید. من از اینجا هر چی دانلود میکنم یا کامپایل نمیشه یا اینکه سفید کامپایل میشه
--------------------------------

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

reza_123
شنبه 26 اردیبهشت 1388, 14:25 عصر
خوب من یکسری اطلاعات راجع به open gl دارم
اول اینکه از کامپایلر borland c++6 developer باید استفاده کنید
این 3 فایل که اینجا هست در قسمتهای زیر قرار میدهید
glut32.dll system 32/windows
glu32.lib lib

glut.h include/gl
فایل اول در سیستم 32 ویندوز می ریزید
فایل دوم در پوشه خود برنامه بورلند قسمت LIB
فایل سوم در پوشه include/gl
بهترین منبع برای یادگیری کتاب opengl super bible هست که pdf تو اینترنت هست
نکته اینکه بورلند برنامه زیادی داره و باید نسختون حتما developer باشه

reza_123
شنبه 26 اردیبهشت 1388, 14:33 عصر
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include<gl/gl.h>
#include<gl/glut.h>

# include<math.h>

//---------------------------------------------------------------------------

#pragma argsused
// Initial square position and size
#define pi 3.14
GLfloat x ;
GLfloat y ;
GLfloat rsize = 25;
float r=pi/180;

void RenderScene(void)
{
glEnable(GL_DEPTH_TEST);
// Angle of revolution around the nucleus
static GLfloat fElect1 = 0.0f;
// Clear the window with current clearing color
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Reset the modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Red Nucleus
glColor3ub(255, 0, 0);
glutSolidSphere(10.0f, 15, 15);
// Yellow Electrons
glColor3ub(255,255,0);
// First Electron Orbit
// Save viewing transformation
glPushMatrix();
// Rotate by angle of revolution
glRotatef(fElect1, 0.0f, 1.0f, 0.0f);
// Translate out from origin to orbit distance
glTranslatef(90.0f, 0.0f, 0.0f);
// Draw the electron
glutSolidSphere(6.0f, 15, 15);
// Restore the viewing transformation
glPopMatrix();
// Second Electron Orbit
glPushMatrix();
glRotatef(45.0f, 0.0f, 0.0f, 1.0f);
glRotatef(fElect1, 0.0f, 1.0f, 0.0f);
glTranslatef(-70.0f, 0.0f, 0.0f);
glutSolidSphere(6.0f, 15, 15);
glPopMatrix();
// Third Electron Orbit
glPushMatrix();
glRotatef( -45.0f, 0.0f, 0.0f, 1.0f);
glRotatef(fElect1, 0.0f, 1.0f, 0.0f);
glTranslatef(0.0f, 0.0f, 60.0f);
glutSolidSphere(6.0f, 15, 15);
glPopMatrix();
// Increment the angle of revolution
fElect1 += 10.0f;
if(fElect1 > 360.0f)
fElect1 = 0.0f;
// Show the image
glutSwapBuffers();
}



void SetupRC(void)
{
// Set clear color to blue
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
void TimerFunction(int value)
{



glutPostRedisplay();
glutTimerFunc(200,TimerFunction, 1);
}

void ChangeSize(GLsizei w, GLsizei h)
{
GLfloat aspectRatio;
// Prevent a divide by zero
if(h == 0)
h = 1;
// Set Viewport to window dimensions
glViewport(0, 0, w, h);
// Reset coordinate system
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Establish clipping volume (left, right, bottom, top, near, far)
aspectRatio = (GLfloat)w / (GLfloat)h;
if (w <= h)
glOrtho (-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio,
1.0, -1.0);
else
glOrtho (-100.0 * aspectRatio, 100.0 * aspectRatio,
-100.0, 100.0, 100.0, -100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(800,600);
glutCreateWindow("Bounce");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimerFunc(1000, TimerFunction, 1);
SetupRC();
glutMainLoop();
return 0;
}
//---------------------------------------------------------------------------

apolon005
پنج شنبه 18 اردیبهشت 1393, 13:13 عصر
سلام
خسته نباشین
ببخشید من هفته دیگه یک ارائه دارم از چند خط کد نویسی opengl
رسم یک خط بصورت نقطه چین
کدهاشم دارم
فقط درخواستم اینه که بگید هر خط کد چه کاری انجام میده؟
و اینکه اگه بخوام 2تا خط بشه باید چیکار کنم
و اینکه اگه بخوام نقطه چینهاش درشت و کوچیک بشه
و اینکه زاویه خط عوض بشه
و حالا بجای نقطه چین وفقط یک خط بشه فقط
اینا سولاتیه که استاد از من میپرسه موقع ارائه
ممنون میشم راهنماییم کنین


#include<GL/glut.h>
void init()
{
glClearColor(0.1,0.2,0.1,0);
glutInitWindowPosition(200,60);
glutInitWindowSize(800,400);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,100,0,200);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
for(int i=1; i<2000 ;i++)
{
glBegin(GL_POINTS);
glVertex2i(i,i*2);
glEnd();
}
glFlush();
}
int main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("Test");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}