,   CyberForum.ru

3D - C++

C++ -1 http://www.cyberforum.ru/cpp-beginners/thread639651.html
, ++, : , -1, . : #include <iostream> #include <cstdlib> using namespace std; int main() {
C++ main ??? http://www.cyberforum.ru/cpp-beginners/thread639610.html
C++
: 1)... 2)... 3)... . - ( 5 )
C++ mingv
mingv\bin , , : c++.exe cpp.exe g++.exe gcc.exe x86_64-w64-mingw32-c++.exe x86_64-w64-mingw32-g++.exe x86_64-w64-mingw32-gcc-4.7.0.exe x86_64-w64-mingw32-gcc.exe . , , , ++, - ( cpp.exe). ...
C++ , http://www.cyberforum.ru/cpp-beginners/thread639587.html
: #include <iostream> using std::cout; using std::cin; using std::endl; #include <string> using std::string;
C++ . , ( , ). , : class Card { public: enum suit { HEARTS, SPADES, DIAMONDS, CLUBS }; Card( suit ); private: suit s;

programina
   programina
1912 / 597 / 37
: 23.10.2011
: 4,468
: 2
20.08.2012, 13:51     3D
OpenGL :
C++
#include <windows.h>
#include <GL\gl.h>
#include <GL\glu.h>
#include <math.h>
 
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
 
//    
int WIDTH   = 800;
int HEIGHT  = 600;
 
//  
#define VK_W    0x057 // W - 
#define VK_S    0x053 // S - 
#define VK_A    0x041 // A - 
#define VK_D    0x044 // D - 
#define VK_Q    0x051 // Q - 
#define VK_ESCAPE  //  
 
 
//     XYZ
float posx = 0.0;
float posy = 2.0;
float posz = 0.0;
 
//     XYZ
float spdx = 0.0;
float spdy = 0.0;
float spdz = 0.0;
//  
float dx = 0.0;
float dy = 0.0;
//  
float yaw = 0.0;
float ptc = 0.0;
//    ( )  
float dxx = 0.0;
float dxz = 0.0;
float dyy = 0.0;
 
HWND        hwnd;
MSG         msg;
HGLRC       hRC;
HDC         hDC;
 
POINT pt;
float prevX;
float prevY;
 
 
 
//-----------------------------------------------------------------------------------------------
//  
//-----------------------------------------------------------------------------------------------
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    WNDCLASSEX wcex;
    wcex.cbSize         = sizeof(WNDCLASSEX);
    wcex.style          = CS_OWNDC;
    wcex.hbrBackground  = (HBRUSH)(0);
    wcex.lpfnWndProc    = WindowProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = "classname";
    wcex.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wcex);
    hwnd = CreateWindowEx( WS_EX_APPWINDOW, "classname", " ", WS_POPUPWINDOW, 0, 0, WIDTH, HEIGHT, HWND_DESKTOP, NULL, hInstance, NULL );
 
    //////////////////////////////////////////////////////////
 
    PIXELFORMATDESCRIPTOR pfd;
    int iFormat;
    hDC = GetDC (hwnd);
    ZeroMemory (&pfd, sizeof (pfd));
    pfd.nSize       = sizeof (pfd);
    pfd.nVersion    = 1;
    pfd.dwFlags     = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
    pfd.iPixelType  = PFD_TYPE_RGBA;
    pfd.cColorBits  = 24;
    pfd.cDepthBits  = 16;
    pfd.iLayerType  = PFD_MAIN_PLANE;
    iFormat         = ChoosePixelFormat (hDC, &pfd);
    SetPixelFormat (hDC, iFormat, &pfd);
 
    hRC = wglCreateContext(hDC);
    wglMakeCurrent(hDC, hRC);
 
    //////////////////////////////////////////////////////////
 
    glViewport(0, 0, WIDTH, HEIGHT);
    glMatrixMode(GL_PROJECTION);
 
    gluPerspective(45.0f, (float)WIDTH/(float)HEIGHT, 0.1f, 1000.0f);
    glMatrixMode(GL_MODELVIEW);
 
    glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
    glDepthFunc(GL_LEQUAL);
    glDepthRange(0.0, 1.0);
    glEnable(GL_DEPTH_TEST);
 
 
    ShowWindow(hwnd, nCmdShow);
    ShowCursor(false);
 
    //////////////////////////////////////////////////////////
 
 
    float angle = 0.0; //    
 
    while ( msg.message != WM_QUIT )
    {
        if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        else
        {
            //  -
            if      ( GetAsyncKeyState( VK_A ) < 0 )    { spdz = 0.05; }    //    X    A
            else if ( GetAsyncKeyState( VK_D ) < 0 )    { spdz =-0.05; }    //    X    D
            else                                        { spdz = 0.0; }     //      
            //  -
            if      ( GetAsyncKeyState( VK_W ) < 0 )    { spdx =-0.05; }    //    Z    W
            else if ( GetAsyncKeyState( VK_S ) < 0 )    { spdx = 0.05; }    //    Z    S
            else                                        { spdx = 0.0; }     //      
 
            SetCursorPos(WIDTH/2, HEIGHT/2);//     
            GetCursorPos(&pt);              //   
            prevX = pt.x;                   //  
            prevY = pt.y;                   //  
            Sleep(10);                      //   
            GetCursorPos(&pt);              //    
 
            dx = pt.x - prevX;              //     10   
            dy = pt.y - prevY;              //     10   
 
            yaw += dx/1000.0;               //        -
            ptc += dy/1000.0;               //        -
 
            //    -
            if (ptc >= 1.5) ptc = 1.5;
            if (ptc <=-1.5) ptc =-1.5;
 
            //    X-Z
            dxx = sin(yaw); // dxx -     X
            dxz = cos(yaw); // dxz -     Z
            dyy = sin(ptc); // dyy -     Y
 
            //         
            //    ,  ,     X  Z
            posz += spdz * dxx;
            posx += spdx * dxx;
            posx += spdz * dxz;
            posz -= spdx * dxz;
 
 
            glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
            //   dxx, dyy  dxz      (  )
            //  ,        3-  ( dxx, dyy  dxz   10 )
            gluLookAt( posx+dxx, posy+dyy, posz-dxz, posx, posy, posz, 0.0, 1.0, 0.0 );
 
            //-----------------------------------------------------------------------------------------------
 
            //  
            glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
            glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 
            angle += 0.5;
            if (angle >= 360.0) angle = 0.0;
 
            //     
            glPushMatrix();
            glTranslatef( 0.0, 2.0, 5.0 );
            glRotatef( angle, 0.0, 1.0, 0.0 );
            glBegin(GL_QUADS);
            glColor3f(0.0, 0.0, 1.0);
            glVertex3f(  1.0, -1.0, 0.0 );
            glVertex3f(  1.0,  1.0, 0.0 );
            glVertex3f( -1.0,  1.0, 0.0 );
            glVertex3f( -1.0, -1.0, 0.0 );
            glEnd();
            glPopMatrix();
            //     
            glPushMatrix();
            glTranslatef( 0.0, 0.0, 0.0 );
            glRotatef( 0.0, 0.0, 1.0, 0.0 );
            glBegin(GL_QUADS);
            glColor3f(0.0, 0.5, 0.0);
            glVertex3f(-4.0,  0.0, -4.0 );
            glVertex3f(-4.0,  0.0,  4.0 );
            glVertex3f( 4.0,  0.0,  4.0 );
            glVertex3f( 4.0,  0.0, -4.0 );
            glEnd();
            glPopMatrix();
 
            glFlush();
            SwapBuffers (hDC);
        }
    }
 
    wglMakeCurrent(NULL, NULL);
    wglDeleteContext(hRC);
    ReleaseDC(hwnd, hDC);
    DestroyWindow(hwnd);
    return msg.wParam;
}
 
 
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        case WM_CLOSE:
            PostQuitMessage(0);
            break;
        case WM_KEYDOWN:
            switch (wParam)
            {
                case VK_ESCAPE:
                case VK_Q:
                    PostQuitMessage(0);
                    break;
            }
            break;
        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}
 
: 03:13. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
@Mail.ru