Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2015, 22:04   #1
PANDA8
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 38
По умолчанию OpenGL

Имеется объект круг который движется в квадрате случаным образом, нужно нарисовать это дело в OpenGL чтобы не было мерцания экрана, подскажите как там начать вообще куча сайтов и везде по разному, мне бы шаблон какой-нито )
PANDA8 вне форума Ответить с цитированием
Старый 17.02.2015, 05:24   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Пример на OpenGL с созданием окна.
Функции рисования эллипса в OpenGL нет, то есть нужно по точкам рисовать.

Код:
#include <windows.h>
#include "GL/gl.h"
#include "GL/glu.h"
#include "GL/glaux.h"
 
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "kernel32.lib")
#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "advapi32.lib")

#pragma comment (lib,"Opengl32.lib")
#pragma comment (lib,"Glaux.lib")
 
extern "C" long _ftol( double ); //defined by VC6 C libs
extern "C" long _ftol2( double dblSource ) { return _ftol( dblSource ); }
 
 
void CALLBACK display(void); 
 
int main(int argc, char** argv)
{
        auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
        auxInitPosition (0, 0, 500, 500);
        auxInitWindow ("Line 2D");
        auxMainLoop(display);
        return 0;
}
 
void CALLBACK display(void)
{
        glBegin(GL_LINES); 
        glVertex2f (0,0); 
        glVertex2f (100,100); 
        glEnd();
        glFlush();
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 07:06   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от PANDA8 Посмотреть сообщение
Имеется объект круг который движется в квадрате случаным образом, нужно нарисовать это дело в OpenGL чтобы не было мерцания экрана, подскажите как там начать вообще куча сайтов и везде по разному, мне бы шаблон какой-нито )
Нужно определиться какой фреймворк вы будете использовать для создания окна: Qt, GLUT, WinAPI и т.д., так как OpenGL не умеет создавать окна. Советую Qt

Далее, нужно научиться рисовать примитив - треугольник. В OpenGL все объекты состоят из треугольников. Круг состоит из треугольников, у которых общая вершина в центре

Возможно вам подойдут мои видео-уроки: 001 Qt C++ OpenGL GLSL Рисуем треугольник Там найдёте, как рисовать квадрат и изменять координаты объектов по таймеру
8Observer8 вне форума Ответить с цитированием
Старый 17.02.2015, 23:13   #4
PANDA8
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 38
По умолчанию

Хотелось бы все таки в Visual Studio, поэтому даю GLUT нужен
PANDA8 вне форума Ответить с цитированием
Старый 17.02.2015, 23:21   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Никто не мешает использовать библиотеку Qt в VS вместо Qt Creator. Там даже add-in к VS есть для некоторой интеграции и облегчения.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.02.2015, 23:26   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Имейте ввиду, что нужно будет потратить много времени и труда, чтобы научиться рисовать даже простейшие фигуры. Кто-то начинает с NeHe и СуперКниги (там как раз GLUT). Правда, там устаревший способ рисования через glBegin/glEnd. Кто-то сразу с шейдеров

У NeHe примеры c WinAPI, но на официальном сайте можно найти под каждый уроком примеры на GLUT
8Observer8 вне форума Ответить с цитированием
Старый 18.02.2015, 11:41   #7
PANDA8
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 38
По умолчанию

А как сделать тогда чтобы не было мерцания изображения в WindowsForms при прорисовке новых объектов?
PANDA8 вне форума Ответить с цитированием
Старый 18.02.2015, 12:41   #8
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Возможно вы забыли вызвать функцию swap в режиме двойного буфера (если вы используете GLUT). То есть у вас есть два буфера рисования: один непосредсвенно связан с экраном, а во втором происходит формирование нового изображения. Когда формирование закончено, то буферы нужно поменять местами, вызвав swap (я не помню точного названия этой функции). В общем, много вы узнаете о GLUT (и не только) если прочитаете хотя бы первые три главы из СуперКниги: книга, код к книге. Многие вопросы отпадут сами собой и вы сможете работать и решать такие мелкие проблемы самостоятельно
8Observer8 вне форума Ответить с цитированием
Старый 18.02.2015, 12:46   #9
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

А, вы же для окна решили WindowsForms использовать, но всё же возможно, что с двойным буфером связано это мерцание. Трудно сказать на вскидку. Нужно код смотреть. Прикрепите проект, может кто поможет
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL ser70 Общие вопросы C/C++ 5 12.07.2013 11:06
Qt+OpenGL. Qt "не видит" функции OpenGL EnterFix Qt и кроссплатформенное программирование С/С++ 4 29.01.2013 18:59
OpenGL + C++ GuardianSpirit Visual C++ 1 12.01.2013 07:45
OpenGl macintoshka12 Общие вопросы C/C++ 2 21.04.2010 12:59
OpenGl Freer Помощь студентам 1 25.05.2009 17:57