Ładny brzuch

Mam problem napisalem taki programik z cylindrem z pewnego tutka http://www.dimmensio..._tutorial&nr=23
jakby co, no i nic nie widac oprocz czarnego okna :P to moj kod
#include <windows.h> #include <GL/gl.h> #include <gl/glu.h> #include <glut.h> #include <math.h> #define PI 3.1415926535897932384626433832795 #define DEG2RAD(x) ((x*PI)/180.0f) #include <cassert> #define CYLINDER 1 static HGLRC hRC; static HDC hDC; bool keys[256]; bool mp=false; int mode=0; float mat[] = {0.7f, 0.7f, 0.7f, 1.0f}; float DiffuseLight1[] = {0.8f, 0.8f, 0.8f, 1.0f}; float DiffuseLight2[] = {0.8f, 0.0f, 0.0f, 1.0f}; float LightPosition1[] = {0.0f, 0.0f, 40.0f, 1.0f}; float LightPosition2[] = {0.0f, 0.0f, -40.0f, 1.0f}; float SpotDirection1[] = {0.0f, 0.0f, -1.0f}; float SpotDirection2[] = {0.0f, 0.0f, 1.0f}; void BuildList( void ) { glNewList( CYLINDER, GL_COMPILE ); glBegin( GL_TRIANGLE_STRIP ); for( int i=0; i<=360; i++ ) { glNormal3f( 3*sin(DEG2RAD(i)), 0, 3*cos(DEG2RAD(i)) ); glVertex3f( 3*sin(DEG2RAD(i)), 5, 3*cos(DEG2RAD(i)) ); glNormal3f( 3*sin(DEG2RAD(i)), 0, 3*cos(DEG2RAD(i)) ); glVertex3f( 3*sin(DEG2RAD(i)), -5, 3*cos(DEG2RAD(i)) ); }; glEnd(); glEndList(); }; void ResizeGLWindow(int szerokosc,int wysokosc) { if( wysokosc == 0 ) { wysokosc=1; } glViewport( 0, 0, szerokosc, wysokosc ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 45.0f, (float) szerokosc / (float) wysokosc, 0.01, 100 ); } void InitGL() { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glLightfv(GL_LIGHT0, GL_DIFFUSE, DiffuseLight1); glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1); glLightfv(GL_LIGHT1, GL_DIFFUSE, DiffuseLight2); glLightfv(GL_LIGHT1, GL_POSITION, LightPosition2); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 20.0f); glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 120.0f); glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 20.0f); glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 120.0f); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_LIGHTING); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); BuildList(); } void SetDCPixelFormat( HDC hDC ) { int nPixelFormat; static PIXELFORMATDESCRIPTOR pfd = { sizeof( PIXELFORMATDESCRIPTOR ), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 8, 0,0,0,0,0,0, 0,0, 0,0,0,0,0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; nPixelFormat = ChoosePixelFormat( hDC, &pfd ); // Tu jet ten blad SetPixelFormat( hDC, nPixelFormat, &pfd ); } void Render() { glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f, 0.0f, -30.0f); glRotatef(30.0f, 1, 0, 0); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat); glCallList( CYLINDER ); glPushMatrix(); glRotatef(timeGetTime()/10, 0.0f, 1.0f, 0.0f); glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, SpotDirection1); glLightfv(GL_LIGHT1, GL_POSITION, LightPosition2); glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, SpotDirection2); glPopMatrix(); glFlush(); SwapBuffers( hDC ); } static TCHAR lpszAppName[] = TEXT( "API Windows" ); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: hDC = GetDC( hWnd ); SetDCPixelFormat( hDC ); hRC = wglCreateContext( hDC ); wglMakeCurrent( hDC, hRC ); InitGL(); break; case WM_SIZE: ResizeGLWindow( LOWORD( lParam ), HIWORD( lParam ) ); break; case WM_DESTROY: wglMakeCurrent(hDC,NULL); wglDeleteContext(hRC); PostQuitMessage(0); break; case WM_PAINT: Render(); break; case WM_KEYDOWN: switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); break; } break; default: return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } return(0L); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; WNDCLASS wndclass; HWND hWnd; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = MainWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = lpszAppName; if(RegisterClass(&wndclass) == 0) return FALSE; hWnd = CreateWindow( lpszAppName, lpszAppName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 100, 100, 400, 300, NULL, NULL, hInstance, NULL); if(hWnd == NULL) return FALSE; ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }

edit: codebox! - m
czy ktos wie dlaczego tak sie dzieje??
Uytkownik migajek edytowa ten post 06 marzec 2006, 16:11


void Render() ... zamiast glLoadIdentity() daj glPushMatrix(); glTranslatef(0.0f, 0.0f, -30.0f); glRotatef(30.0f, 1, 0, 0); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat); glCallList( CYLINDER ); glPopMatrix(); ...


Mam problem napisalem taki programik z cylindrem z pewnego tutka http://www.dimmensio..._tutorial&nr=23
jakby co, no i nic nie widac oprocz czarnego okna :P to moj kod
#include <windows.h> #include <GL/gl.h> #include <gl/glu.h> #include <glut.h> #include <math.h> #define PI 3.1415926535897932384626433832795 #define DEG2RAD(x) ((x*PI)/180.0f) #include <cassert> #define CYLINDER 1 static HGLRC hRC; static HDC hDC; bool keys[256]; bool mp=false; int  mode=0; float mat[] = {0.7f, 0.7f, 0.7f, 1.0f}; float DiffuseLight1[] = {0.8f, 0.8f, 0.8f, 1.0f}; float DiffuseLight2[] = {0.8f, 0.0f, 0.0f, 1.0f}; float LightPosition1[] = {0.0f, 0.0f, 40.0f, 1.0f}; float LightPosition2[] = {0.0f, 0.0f, -40.0f, 1.0f}; float SpotDirection1[] = {0.0f, 0.0f, -1.0f}; float SpotDirection2[] = {0.0f, 0.0f, 1.0f}; void BuildList( void ) {     glNewList( CYLINDER, GL_COMPILE );       glBegin( GL_TRIANGLE_STRIP );     for( int i=0; i<=360; i++ )     {         glNormal3f( 3*sin(DEG2RAD(i)), 0, 3*cos(DEG2RAD(i)) );         glVertex3f( 3*sin(DEG2RAD(i)), 5, 3*cos(DEG2RAD(i)) );         glNormal3f( 3*sin(DEG2RAD(i)), 0, 3*cos(DEG2RAD(i)) );         glVertex3f( 3*sin(DEG2RAD(i)), -5, 3*cos(DEG2RAD(i)) );     };     glEnd();     glEndList(); }; void ResizeGLWindow(int szerokosc,int wysokosc) { if( wysokosc == 0 ) {     wysokosc=1; } glViewport( 0, 0, szerokosc, wysokosc ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 45.0f, (float) szerokosc / (float) wysokosc, 0.01, 100 ); } void InitGL() { glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glLightfv(GL_LIGHT0, GL_DIFFUSE, DiffuseLight1); glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1); glLightfv(GL_LIGHT1, GL_DIFFUSE, DiffuseLight2); glLightfv(GL_LIGHT1, GL_POSITION, LightPosition2); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 20.0f); glLightf(GL_LIGHT0, GL_SPOT_EXPONENT, 120.0f); glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 20.0f); glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 120.0f); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glEnable(GL_LIGHTING); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); BuildList(); } void SetDCPixelFormat( HDC hDC ) { int nPixelFormat; static PIXELFORMATDESCRIPTOR pfd = { sizeof( PIXELFORMATDESCRIPTOR ), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 8, 0,0,0,0,0,0, 0,0, 0,0,0,0,0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; nPixelFormat = ChoosePixelFormat( hDC, &pfd ); // Tu jet ten blad SetPixelFormat( hDC, nPixelFormat, &pfd ); } void Render() { glClearColor( 0.0f, 0.0f, 0.0f, 1.0f ); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f, 0.0f, -30.0f); glRotatef(30.0f, 1, 0, 0); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat);                 glCallList( CYLINDER );         glPushMatrix(); glRotatef(timeGetTime()/10, 0.0f, 1.0f, 0.0f); glLightfv(GL_LIGHT0, GL_POSITION, LightPosition1); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, SpotDirection1); glLightfv(GL_LIGHT1, GL_POSITION, LightPosition2); glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, SpotDirection2); glPopMatrix(); glFlush(); SwapBuffers( hDC ); } static TCHAR lpszAppName[] = TEXT( "API Windows" ); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: hDC = GetDC( hWnd ); SetDCPixelFormat( hDC ); hRC = wglCreateContext( hDC ); wglMakeCurrent( hDC, hRC ); InitGL(); break; case WM_SIZE:     ResizeGLWindow( LOWORD( lParam ), HIWORD( lParam ) );     break; case WM_DESTROY: wglMakeCurrent(hDC,NULL); wglDeleteContext(hRC); PostQuitMessage(0); break; case WM_PAINT: Render(); break; case WM_KEYDOWN: switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); break; } break; default: return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } return(0L); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; WNDCLASS wndclass; HWND hWnd; wndclass.style = CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = MainWndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = hInstance; wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = lpszAppName; if(RegisterClass(&wndclass) == 0) return FALSE; hWnd = CreateWindow( lpszAppName, lpszAppName, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 100, 100, 400, 300, NULL, NULL, hInstance, NULL); if(hWnd == NULL) return FALSE; ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; }

edit: codebox! - m
czy ktos wie dlaczego tak sie dzieje??

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •