Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Програмирование под OpenGL, Хочу создать 3D-анимацию - не получается 
:(
    Опции темы
Plotter
  Дата 21.10.2002, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.10.2002
Где: Москва

Репутация: нет
Всего: нет



:hmmm Ну, с трудом я разобрался со всеми предыдущими ошибками и наконец-то дошел до OpenGL... Сначала все получалось, но вскоре (когда мне захотелось создать простенькую анимацию) стали появляться проблемы... Пока начну с основной..: создал объект, задал освещение, установил ракурс... попробовал изменять параметры ракурса - получилось, но при этом предыдущее изображение не удаляется и получается чушь... Вставил строку ,
Код

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

которая должна обновлять буфер или что-то вроде этого - частично помогло. Картинка обновляется, но появилось мелькание... Что делать? Хотелось бы чтоб и картинка обновлялась и мелькания не было... Подскажите способ или угостите фрагментом кода, если найдётся, ну на крайний случай хотя бы книгу по     OpenGL-анимации может посоветуете..., а то не знаю, что надо делать...
PM MAIL WWW   Вверх
Baa
Дата 22.10.2002, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Вот те моя тошнилка... если она у тебя мерцать будет - значит видюха левая...
з.ы. долго на анимацию не смотри - правда стошнит.
Код

#include <StdAfx.h>
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <stdio.h>
#include <stdlib.h>


void display()
{
   glClear(GL_COLOR_BUFFER_BIT);

   glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(-0.5,  -0.5, 0.5);
glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(0.5, -0.5, 0.5);
   glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(0.5, -0.5, -0.5);
glColor3f(1.0f, 1.0f, 0.0f); glVertex3f(-0.5, -0.5, -0.5);
glEnd();

glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(-0.5,  0.0, 0.5);
glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(0.5, 0.0, 0.5);
   glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(0.5, 0.0, -0.5);
glColor3f(1.0f, 1.0f, 0.0f); glVertex3f(-0.5, 0.0, -0.5);
glEnd();

glBegin(GL_QUADS);
   glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(-0.5,  0.5, 0.5);
glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(0.5, 0.5, 0.5);
   glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(0.5, 0.5, -0.5);
glColor3f(1.0f, 1.0f, 0.0f); glVertex3f(-0.5, 0.5, -0.5);
glEnd ();

   glFlush();
}


LONG WINAPI WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   static PAINTSTRUCT ps;

   switch(uMsg) {
   case WM_PAINT:
display();
BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
return 0;

case WM_TIMER:
//glRotatef (1.0, 0.0, 0.0, 0.5);
glRotatef (1.0, 1.0, 0.0, 0.5);
display();
break;

   case WM_SIZE:
glViewport(0, 0, LOWORD(lParam), HIWORD(lParam));
PostMessage(hWnd, WM_PAINT, 0, 0);
return 0;

   case WM_CHAR:
switch (wParam) {
case 27: /* ESC key */
   PostQuitMessage(0);
   break;
}
return 0;

   case WM_CLOSE:
KillTimer (hWnd, 12);
PostQuitMessage(0);
return 0;
   }

   return DefWindowProc(hWnd, uMsg, wParam, lParam);
}

HWND
CreateOpenGLWindow(char* title, int x, int y, int width, int height,
  BYTE type, DWORD flags)
{
   int         pf;
   HDC         hDC;
   HWND        hWnd;
   WNDCLASS    wc;
   PIXELFORMATDESCRIPTOR pfd;
   static HINSTANCE hInstance = 0;

   /* only register the window class once - use hInstance as a flag. */
   if (!hInstance) {
hInstance = GetModuleHandle(NULL);
wc.style         = CS_OWNDC;
wc.lpfnWndProc   = (WNDPROC)WindowProc;
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = hInstance;
wc.hIcon         = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName  = NULL;
wc.lpszClassName = "OpenGL";

if (!RegisterClass(&wc)) {
   MessageBox(NULL, "RegisterClass() failed:  "
      "Cannot register window class.", "Error", MB_OK);
   return NULL;
}
   }

   hWnd = CreateWindow("OpenGL", title, WS_OVERLAPPEDWINDOW |
WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
x, y, width, height, NULL, NULL, hInstance, NULL);

   if (hWnd == NULL) {
MessageBox(NULL, "CreateWindow() failed:  Cannot create a window.",
  "Error", MB_OK);
return NULL;
   }

SetTimer (hWnd , 12, 10, NULL);

   hDC = GetDC(hWnd);

   memset(&pfd, 0, sizeof(pfd));
   pfd.nSize        = sizeof(pfd);
   pfd.nVersion     = 1;
   pfd.dwFlags      = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | flags;
   pfd.iPixelType   = type;
   pfd.cColorBits   = 16;

   pf = ChoosePixelFormat(hDC, &pfd);
   if (pf == 0) {
MessageBox(NULL, "ChoosePixelFormat() failed:  "
  "Cannot find a suitable pixel format.", "Error", MB_OK);
return 0;
   }

   if (SetPixelFormat(hDC, pf, &pfd) == FALSE) {
MessageBox(NULL, "SetPixelFormat() failed:  "
  "Cannot set format specified.", "Error", MB_OK);
return 0;
   }

   DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);

   ReleaseDC( hWnd, hDC);

   return hWnd;
}    

int APIENTRY WinMain(HINSTANCE hCurrentInst, HINSTANCE hPreviousInst,
LPSTR lpszCmdLine, int nCmdShow)
{
   HDC hDC;
   HGLRC hRC;
   HWND  hWnd;
   MSG   msg;

   hWnd = CreateOpenGLWindow("Minimal", 0, 0, 256, 256, PFD_TYPE_RGBA, 0);
   if (hWnd == NULL)
exit(1);


   hDC = GetDC(hWnd);
   hRC = wglCreateContext(hDC);
   wglMakeCurrent(hDC, hRC);

   ShowWindow(hWnd, nCmdShow);

   while(GetMessage(&msg, hWnd, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
   }

   wglMakeCurrent(NULL, NULL);
   ReleaseDC(hWnd, hDC);
   wglDeleteContext(hRC);
   DestroyWindow(hWnd);

   return msg.wParam;
}



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Plotter
  Дата 22.10.2002, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.10.2002
Где: Москва

Репутация: нет
Всего: нет



:( А что ты понимаешь под словом "левая"? Дело в том, что я твой фрагмент переписал и он у меня все равно мерцает. У тебя мерцания вообще не было? Просто на свою видюху я еще ни разу не жаловался... У меня ABIT-овский GeForce2MX-400 (64Mb)... Не думаю, что она не потянет мою анимацию - должна. Может что-то еще можно сделать?
PM MAIL WWW   Вверх
Timur
Дата 24.10.2002, 00:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











может дрова под карту плохо стоят
операционка какая у тебя?
  Вверх
Plotter
Дата 24.10.2002, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.10.2002
Где: Москва

Репутация: нет
Всего: нет



Может, конечно и из-за операционки... Windows XP у меня (Pro версия, но русская)... Под ним вообще-то много что глючит...
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0906 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.