Статьи

Главная Новости

Программирование и игры

Опубликовано: 13.04.2018

видео Программирование и игры

5 популярных игр и их языки программирования

Привет. Решил я рассказать про OpenGL . Почему бы и нет. Тем более в нескольких статьях, OpenGL мной использовался. Вот и решил что надо бы рассказать. За одно и сам вспомню, что забыл, и узнаю, что не знал.



Начнем мы с простого. Так как для того, что бы что-то нарисовать, будь то прямоугольник, либо сложная трехмерная модель, OpenGL нужно предоставить окно (своего рода холст для рисования), мы начнем именно с создания окна.

К нашему с вами счастью, SDL может предоставить окно для рисования в нем средствами OpenGL . Делается это очень просто. Подготовим для наших экспериментов файл Game.hpp:


Создание 3D игры в Unity | #Урок 1

#if n def GAME_HPP__ #define GAME_HPP__ #include <iostream> #include <sstream> #include <stdexcept> #include <string> #include <SDL/SDL.h> class Game { public : Game (int width = 640, int height = 480, int bpp = 32) { using std :: cerr ; using std :: endl ; using std :: stringstream ; using std :: runtime_error ; this ->m_width = width; this ->m_height = height; this ->m_bpp = bpp; if (SDL_Init(SDL_INIT_VIDEO)) { stringstream err ; err << "Unable to initialize SDL: " << SDL_GetError() << endl; cerr << err.str(); throw runtime_error(err.str().c_str()); } if (!SDL_SetVideoMode(width, height, bpp, SDL_OPENGL)) { stringstream err ; err << "Unable to set video mode: " << SDL_GetError() << endl; cerr << err.str(); throw runtime_error(err.str().c_str()); } SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, true ); } virtual void setup_opengl (int width , int height ) {} virtual void draw (int dt ) {} virtual void on_key_down (SDL_KeyboardEvent key ) {} virtual void on_key_up (SDL_KeyboardEvent key ) {} void set_caption (std :: string caption ) { SDL_WM_SetCaption(caption.c_str(), NULL ); } void run () { SDL_Event event ; bool done = false ; unsigned int dt = 0; unsigned int old = 0; this ->setup_opengl( this ->m_width, this ->m_height); while (!done) { dt = SDL_GetTicks() - old; old += dt; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: this ->on_key_down(event.key); break ; case SDL_KEYUP: this ->on_key_up(event.key); break ; case SDL_QUIT: done = true ; break ; } } this ->draw(dt); SDL_GL_SwapBuffers(); } } void quit () { SDL_Event push_event ; push_event.type=SDL_QUIT; SDL_PushEvent(&push_event); } virtual ~ Game () { SDL_Quit(); } private : int m_width ; int m_height ; int m_bpp ; }; #endif /* GAME_HPP__ */

В SDL_SetVideoMode мы используем флаг SDL_OPENGL, для того что бы создать окно, в котором может рисовать OpenGL . Я же говорил, что это легко.


Программирование на Java: создание игры Змейка. Часть 1.

Новости

Карта
rss