Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Valera`
0 / 0 / 0
Регистрация: 12.08.2012
Сообщений: 14
#1

opengl не рисуется - C++

19.11.2012, 23:24. Просмотров 384. Ответов 0
Метки нет (Все метки)

инициализирую opengl, ошибок при компилировании и выполнении не выдаёт
сделать надо без glut
создание окна winapi работает
часть кода инициализации opengl скопипастил, возможно там чето есть

swapbuffers есть
и цвет вроде не черный, пробовал разные

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>

#pragma comment (lib, "OpenGL32.lib")
#pragma comment (lib, "glu32.lib")

BOOL keys[256];

HWND hWnd = NULL;
HGLRC hGLRC_ = NULL;
HDC hDC_ = NULL;
int LEN_X = 800;
int LEN_Y = 800;

static GLfloat light1_position[] = {0.0, 0.0, 3.0, 1.0};

ATOM MyRegisterMyClass (HINSTANCE hInstance);
HWND MyCreateWindow (HINSTANCE hInstance, int nCmdShow);
HWND MyCreateHWnd (HINSTANCE hInstance, char Title, int Len_X, int Len_Y);


void InitGL()
{
GLfloat white_light[] = {1.0, 1.0, 1.0, 1.0};
GLfloat light_position[] = {0.0, 0.0, 10.0, 1.0};
glClearColor (0.5, 0.5, 0.5, 0.0);
glLightf (GL_LIGHT0, GL_SPOT_EXPONENT, 20.0);
glLightfv (GL_LIGHT0, GL_POSITION, light_position);
glLightf (GL_LIGHT0, GL_SPECULAR, 128);
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0);
glShadeModel (GL_SMOOTH);
glEnable (GL_DEPTH_TEST);
glEnable (GL_AUTO_NORMAL);
glEnable (GL_NORMALIZE);
glEnable (GL_CULL_FACE);
glCullFace (GL_BACK);
}


void reshape(int width, int height)
{
glViewport (0, 0, width, height);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective (50.0, (GLfloat) width / (GLfloat) height, 1.0, 100.0);
gluLookAt (0,0,3, 0,0,0, 0,1,0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
}


void Display ()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

glPushMatrix();
// cntr +=0.1;
glTranslatef (0.0, 0.0, -5.0);
//glRotated(cntr, 0.0f, 1.0f, 0.0f);

// auxWireSphere(1.0);

// if (cntr >= 360.0f) cntr =0.0f;
glPopMatrix();

glFlush();
}

void CreateGl ()
{
GLuint PixelFormat;
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof (PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW |
PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32,
0, 0, 0, 0, 0, 0,
0,
0,
0,
1, 1, 1, 1,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0, 0, 0
};

hDC_ = GetDC(hWnd);
PixelFormat = ChoosePixelFormat(hDC_, &pfd);
SetPixelFormat (hDC_, PixelFormat, &pfd);
hGLRC_ = wglCreateContext (hDC_);
wglMakeCurrent (hDC_, hGLRC_);
InitGL ();
}


LRESULT CALLBACK WndProc (HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
RECT Screen;
switch(message)
{
case WM_CREATE:
{
CreateGl ();
break;
}

case WM_LBUTTONDOWN:
{
glBegin(GL_LINES);
glColor3d(1, 1, 1);
glVertex2d(1,1);
glVertex2d(-1,-1);
glEnd();
SwapBuffers (hDC_);
break;
}
case WM_CLOSE:
{
ChangeDisplaySettings (NULL, 0);
if (hDC_) {wglMakeCurrent (hDC_, NULL);}
if (hGLRC_) {wglDeleteContext (hGLRC_);}
if (hWnd) {ReleaseDC (hWnd, hDC_);}
PostQuitMessage(0);
break;
}

case WM_SIZE:
{
GetClientRect (hWnd, &Screen);
reshape(Screen.right, Screen.bottom );
break;
}

case WM_KEYDOWN:
{
keys[wParam] = TRUE;
break;
}

case WM_KEYUP:
{
keys[wParam] = FALSE;
break;
}

default:
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}


int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInst,
LPSTR lpCmdLine,
int iCmdShow)
{
MyCreateWindow (hInstance, iCmdShow);
}


void Message (HWND hWnd)
{
MSG msg;
while (GetMessage (&msg, 0, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
}

HWND MyCreateHWnd (HINSTANCE hInstance, char* Title, int Len_X, int Len_Y)
{
return CreateWindow (
L"Window",
L"Window",
WS_OVERLAPPEDWINDOW,
150,
100,
LEN_X,
LEN_Y,
NULL,
NULL,
hInstance,
NULL
);
}

HWND MyCreateWindow (HINSTANCE hInstance, int nCmdShow)
{
MyRegisterMyClass (hInstance);
HWND hWnd = MyCreateHWnd (hInstance, "Window", 500, 500);
ShowWindow (hWnd, nCmdShow);
UpdateWindow (hWnd);
Message (hWnd);
return hWnd;
}

ATOM MyRegisterMyClass (HINSTANCE hInstance)
{
WNDCLASS wc;
wc.style = CS_DBLCLKS;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) (8);
wc.lpszMenuName = NULL;
wc.lpszClassName = L"Window";
if (!RegisterClass (&wc))
{
// MessageBox (NULL, "class not registered", "Error", 1);
return 0;
}
return 1;
}

Добавлено через 2 часа 1 минуту
уточню, скомпилив прогу при нажатии левой кнопки мыши должно происходить рисование, но ничего не рисуется
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 23:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос opengl не рисуется (C++):

Не рисуется DOSовская графика - C++
Привет! Проблема: программа, написанная на С и работающая под DOSом, прекрасно рисовала, пока я не перешла на компьютер с двухядерным...

Graphics.h как рисуется квадрат? - C++
Готовые фигуры такие как прямоугольник, окружность, прямые в библиотеке graphics.h в С++ есть.. А есть ли готовая фигура квадрата?? Или как...

По кнопке "<" рисуется эллипс, а по кнопке ">" не рисуется: исправить ошибку (свой компонент, canvas) - Delphi
Прикрепил проект. Вкратце: по нажатию по форме и по кнопке &quot;&lt;&quot; рисуется эллипс, а по кнопке &quot;&gt;&quot; не рисуется, в чём ошибка??? Уже пошло до...

Perl + OpenGL Как избавиться от повторного подключения библиотеки OpenGL в модулях - Perl
Доброго времени суток! Сегодня решил заняться программированием на языке Perl, используя библиотеку OpenGL :D Возникли вопросы: ...

Чем отличаются готовые сборки Qt под Win + MSVC с OpenGL и без OpenGL? - C++ Qt
Ну вопрос собственно в том, что мне не очень понятно, что же в сборке кьюте без опен джел имеется вместо него? Тоесть понятно, что в сборке...

Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности - OpenGL
Я читал про opengl - для его инициализации нужно создавать windows - окно. Для linux видимо инициализация происходить по другому. как мне...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 23:24
Привет! Вот еще темы с ответами:

OpenGL Ваша текущая конфигурация рабочего стола не поддерживает OpenGL Аппаратное ускорение. - Windows 7
всем здрасте ) скачал opengl extensions viewer решил проверить драйверы на видео карту.В разделе программы Repot мне посыпалось куча...

(2 главы перевода книги доступно) OpenGL Programming Guide, Version 4.3, 8th Edition - OpenGL - OpenGL
Продолжая тему с переводом книги http://www.cyberforum.ru/opengl/thread1551398.html Выкладываю для скачивания вторую переведенную главу в...

Ошибки при подключение opengl, немного не связанные с opengl - OpenGL
#include &lt;windows.h&gt; #include &quot;stdafx.h&quot; #include &lt;gl/gl.h&gt; #include &lt;gl/glu.h&gt; #include &lt;stdio.h&gt; //#include &quot;TXLib.h&quot; ...

Ничего не рисуется - OpenGL
//================================================================================================= #include &lt;windows.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru