Note that there are some explanatory texts on larger screens.

plurals
  1. POopengl problem under vista
    primarykey
    data
    text
    <p>I've just started with opengl but I ran into some strange behaviour.</p> <p>Below I posted code that runs well in xp but on vista it renders just black screen.</p> <p>Sorry for posting unusally (as for this board) long code.</p> <p>Is there something very specific to open gl in vista? Thanks.</p> <pre><code>#include&lt;windows.h&gt; #include&lt;gl\gl.h&gt; #include&lt;gl\glu.h&gt; #pragma comment(lib, "opengl32.lib") #pragma comment(lib, "glu32.lib") void InitGL(void) { glClearColor(1,0.3f,0.3f,0.3f); } void DrawGLScene(void) { /* code removed */ } HGLRC hRC = NULL; HDC hDC = NULL; HWND hWnd = NULL; HINSTANCE hInstance = NULL; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); bool CreateGLWindow(char* title, int width, int height) { GLuint PixelFormat; WNDCLASS wc; RECT WindowRect; WindowRect.left = (long)0; WindowRect.right = (long)width; WindowRect.top = (long)0; WindowRect.bottom = (long)height; LPCSTR nazwa = TEXT("Start"); hInstance = GetModuleHandle(NULL); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = (WNDPROC)WndProc; 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 = nazwa; RegisterClass(&amp;wc); hWnd = CreateWindowEx(WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, nazwa, nazwa, WS_SYSMENU | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0,0, width, height, NULL, NULL, hInstance, NULL); 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, 0,0,0,0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; hDC = GetDC(hWnd); PixelFormat = ChoosePixelFormat(hDC, &amp;pfd); HRESULT rez = SetPixelFormat(hDC, PixelFormat, &amp;pfd); hRC = wglCreateContext(hDC); wglMakeCurrent(hDC, hRC); ShowWindow(hWnd, SW_SHOW); InitGL(); return true; } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_ACTIVATE: { return 0; } case WM_CLOSE: { PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd, uMsg, wParam, lParam); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; bool done = false; if (!CreateGLWindow(NULL, 800,600)) { return 0; } while(!done) { if (PeekMessage(&amp;msg, NULL, 0, 0, PM_NOREMOVE)) { if (!GetMessage(&amp;msg, 0, 0, 0)) done = true; else { TranslateMessage(&amp;msg); DispatchMessage(&amp;msg); } } else { DrawGLScene(); SwapBuffers(hDC); } } return (msg.wParam); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload