سورس رسم مکعب با OpenGL به زبان C++

draw cube in opengl using cpp 5114 سورس رسم مکعب با OpenGL به زبان C++

سورس رسم مکعب با OpenGL به زبان C++

در این بخش سورس رسم مکعب با OpenGL را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C++ نوشته شده است. شما با مشاهده این سورس کد می توانید نحوه رسم اشکال مختلف با استفاده از خطوط، رسم گرید (Grid) و همچنین پر کردن بخشی از صفحه با یک رنگ خاص را در OpenGL یاد بگیرد. در ادامه می توانید توضیحات و تصاویر مربوط به این برنامه را مشاهده کنید.

توضیحات پروژه

این پروژه به از نوع Console Application است و زمانی که کاربر آن را اجرا می کند، یک پنجره OpenGL باز می شود. سپس برنامه یک مکعب را بر روی صفحه نمایش که گرید بندی شده است، رسم می کند.

در زیر توابع استفاده شده در این برنامه را مشاهده می کنید:

  • تابع OpenGlInitializer: برای آماده سازی OpenGL و برنامه استفاده می شود.
  • تابع Display: برای نمایش گرید و مکعب بر روی صفحه استفاده می شود.
  • تابع Resize: برای کنترل اندازه صفحه استفاده می شود.
  • تابع DrawGrid: برای رسم گرید بندی صفحه استفاده می شود.
  • تابع DrawCube: برای رسم مکعب استفاده می شود.

قسمت های از سورس پروژه:

#include <iostream>
#include <cmath>
#include <Gl\GLUT.h>
using namespace std;
// *****************************************
// تعریف ثوابت
// *****************************************
// رنگ پس زمینه - سفید
#define BACKGROUND 1.0, 1.0, 1.0
// رنگ رویی - سیاه
#define FOREGROUND 0.0, 0.0, 0.0
// رنگ خاکستری
#define GRAY 0.9, 0.9, 0.9
// رنگ قرمز
#define RED 0.9, 0.1, 0.0
// عرض صفحه
#define WIN_WIDTH 900
// طول صفحه
#define WIN_HEIGHT 700
// موقعیت X صفحه
#define WIN_POS_X 300
// موقعیت Y صفحه
#define WIN_POS_Y 70
// طول کل گرید ها
#define GRID_LENGTH 1000
// طول هر خانه
#define GRID_CELL_LENGTH 100
// *****************************************
// اعلان الگوی توابع
// *****************************************
// آماده سازی OpenGL
void OpenGlInitializer();
// نمایش گرید و مکعب بر روی صفحه
void Display();
// کنترل اندازه صفحه
void Resize(int, int);
// برای رسم گرید استفاده می شود
void DrawGrid();
// برای رسم مکعب استفاده می شود
void DrawCube();
// *****************************************
// تابع اصلی
// *****************************************
int main(int argc, char ** argv)
{
	glutInit(&argc, argv);
	OpenGlInitializer();
	glutMainLoop();
	return 0;
}
// *****************************************
// پیاده سازی توابع
// *****************************************
void OpenGlInitializer()
{
	glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
	glutInitWindowPosition(WIN_POS_X, WIN_POS_Y);
	glutCreateWindow("SourceSara.Com | Draw Cube");
	glClearColor(BACKGROUND, 1.0);
	glutDisplayFunc(Display);
	glutReshapeFunc(Resize);
}
void Display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	DrawGrid();
	DrawCube();
	glFlush();
}
void Resize(int width, int height)
{
	glViewport(0, 0, width, height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluOrtho2D(0, 1000, 0, 1000);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}
void DrawGrid()
{
	// تنظیم رنگ قلم
	glColor3f(GRAY);
	// تنظیم اندازه قلم
	glLineWidth(0.5f);
	// شروع رسم خط
	glBegin(GL_LINES);
	// دو حلقه زیر برای رسم خط های افقی گرید است
	for (int i = 0; i < GRID_LENGTH; i += GRID_CELL_LENGTH)
	for (int j = 0; j < GRID_LENGTH; j += GRID_CELL_LENGTH)
	{
		glVertex2f(j, i);
		glVertex2f(j + GRID_CELL_LENGTH, i);
	}
	// پایان رسم خط 
	glEnd();
	// شروع رسم خط
	glBegin(GL_LINES);
	// دو حلقه زیر برای رسم خط های عمودی گرید است
	for (int i = 0; i < GRID_LENGTH; i += GRID_CELL_LENGTH)
	for (int j = 0; j < GRID_LENGTH; j += GRID_CELL_LENGTH)
	{
		glVertex2f(i, j);
		glVertex2f(i, j + GRID_CELL_LENGTH);
	}
	// پایان رسم خط 
	glEnd();
}

نکات

  • این پروژه در نرم افزار Visual Studio نسخه ۲۰۱۵ تست شده است و به خوبی کار می کند.
  • به منظور اجرای پروژه های OpenGL باید آن را بر روی IDE خود نصب کنید.
  • سورس کد پروژه به طور کامل کامنت گذاری شده است.
  • در صورت نا مفهوم بودن بخشی از کد، می توانید در قسمت نظرات مطرح کنید تا برای شما توضیح داده شود.

نوشته سورس رسم مکعب با OpenGL به زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *