MFC и OpenGL - Неизвестный Автор

Бесплатно читаем книгу MFC и OpenGL - Неизвестный Автор без сокращений! Чтобы читать полную версию, не нужна регистрация на сайте. Помните, что чтение доступно как на компьютере, так и на Андроиде, Айфоне и любом другом телефоне.
MFC и OpenGL - Неизвестный Автор

Неизвестный Автор - MFC и OpenGL о чем книга


Загадочная и завораживающая книга, которая перенесет вас в мир историй и приключений, полный неожиданных поворотов и фантастических миров. Ее страницы наполняются живыми персонажами, каждый из которых несет свой неповторимый след в плетении сюжета. В этой книге вы найдете мудрость, вдохновение и множество важных уроков жизни. Взлетите на крыльях воображения и отправьтесь в увлекательное путешествие между ее строками, где мир становится вашим собственным волшебным приключением.

Читать онлайн бесплатно MFC и OpenGL, автор Неизвестный Автор


"Подать сюда MFС!!! – кричил он, топая всеми 4-мя лапами."

Сижу тут как-то, программку сочиняю, тут смотрю, царь зверей пожаловал. Вопрос задать пришел. Спрашивает как же OpenGL в MFC то вставить? Сначала думал отмажусь, потом смотрю, настойчивый такой царь попался. Письма шлет, желает знать как же все-таки её туда вставить-то. Вот и решил я примерчик на MFC состроить дабы цари меньше утруждали себя, а больше на солнышке бы нежились, чтоб у царей спокойно и хорошо все было, тогда и нам, простым зверушкам жить хорошо будет. И так поехали.

Для начала сделаем приложение MFC как диалог. Я назвал его BitScroll. Как это делать? Смотрите шаги по MFC.

Теперь, при помощи визарда добавим функцию

>BOOL CBitScrollDlg::PreCreateWindow(CREATESTRUCT& cs) {

> cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;

> return CDialog::PreCreateWindow(cs);

>}

Помните, мы устанавливали слиль окна в функции CreateWindow? Так вот это действие по смыслу тоже самое. Напомню как это выглядело в Win32API:

>hWnd = CreateWindow("Skeleton", "Skeleton", WS_OVERLAPPEDWINDOW |  WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 50, 50, 700, 400, NULL, NULL, hInst, NULL);

Теперь обратимся к функции OnInitDialog(). В ней сначала вызывается функция базового класса, т.е. CDialog, а потом устанавливаются иконки для диалога. Давайте вставим наш код между иконками и CDialog::OnInitDialog().

>SetWindowPos(&wndTop, 0, 0, WIDTH, HEIGHT, SWP_NOMOVE);

>pDC = GetDC();

>CenterWindow();

>Init(); SetTimer(1,SPEED, NULL);

Теперь посмотрим, что мы сделали. Сначала сделаем окно нужного нам размера (макросы WIDTH и HEIGHT объявлены так #define WIDTH 640 и #define HEIGHT 480 в заголовочном файле).

Затем получим контекст для рисования. Установимся в центр вселенной и… вот, тут самое интересное, тут мы вызываем нашу собственную функцию, которая будет инициализировать OpenGL (напоминаю, что тоже самое делала функция Initial в программе на Win32API).

А потом включаем таймер, чтобы обеспечить анимацию. Обратимся теперь к Init(). Выглядит она итак:

>void CBitScrollDlg::Init() {

> CRect rect;

> HGLRC hrc;

> if (!bSetupPixelFormat()) return;

> hrc = wglCreateContext(pDC->GetSafeHdc());

> ASSERT(hrc != NULL);

> wglMakeCurrent(pDC->GetSafeHdc(), hrc);

> GetClientRect(&rect);

> glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

> glClearDepth(1.0);

> glDepthFunc(GL_LESS);

> glEnable(GL_DEPTH_TEST);

> glShadeModel(GL_SMOOTH);

> glMatrixMode(GL_PROJECTION);

> glLoadIdentity();

> gluPerspective(45.0f, (GLfloat)rect.right / (GLfloat)rect.bottom, 0.1f, 100.0f);

Вы автор?
Жалоба
Все материалы размещаются на сайте его пользователями.
Если Ваша книга была опубликована без Вашего ведома и/или без Вашего согласия, пожалуйста, напишите нам, и мы в срочном порядке примем меры.