利用vc与opengl在三维空间中显示*.txt文件中的三维数据点,功能:旋转,缩放。  
  小弟学识尚浅,求一相似程序模仿学习,诚谢!

解决方案 »

  1.   

    // Bounce.c
    // Demonstrates a simple animated rectangle program with GLUT
    // OpenGL SuperBible, 3rd Edition
    // Richard S. Wright Jr.
    // [email protected]#include "../../Common/OpenGLSB.h" // System and OpenGL Stuff// Initial square position and size
    GLfloat x = 0.0f;
    GLfloat y = 0.0f;
    GLfloat rsize = 25;// Step size in x and y directions
    // (number of pixels to move each time)
    GLfloat xstep = 1.0f;
    GLfloat ystep = 1.0f;// Keep track of windows changing width and height
    GLfloat windowWidth;
    GLfloat windowHeight;///////////////////////////////////////////////////////////
    // Called to draw scene
    void RenderScene(void)
    {
    // Clear the window with current clearing color
    glClear(GL_COLOR_BUFFER_BIT);    // Set current drawing color to red
    //    R  G    B
    glColor3f(1.0f, 0.0f, 0.0f); // Draw a filled rectangle with current color
    glRectf(x, y, x + rsize, y - rsize);    // Flush drawing commands and swap
        glutSwapBuffers();
    }///////////////////////////////////////////////////////////
    // Called by GLUT library when idle (window not being
    // resized or moved)
    void TimerFunction(int value)
        {
        // Reverse direction when you reach left or right edge
        if(x > windowWidth-rsize || x < -windowWidth)
            xstep = -xstep;    // Reverse direction when you reach top or bottom edge
        if(y > windowHeight || y < -windowHeight + rsize)
            ystep = -ystep; // Actually move the square
        x += xstep;
        y += ystep;    // Check bounds. This is in case the window is made
        // smaller while the rectangle is bouncing and the 
    // rectangle suddenly finds itself outside the new
        // clipping volume
        if(x > (windowWidth-rsize + xstep))
            x = windowWidth-rsize-1;
    else if(x < -(windowWidth + xstep))
    x = -windowWidth -1;    if(y > (windowHeight + ystep))
            y = windowHeight-1; 
    else if(y < -(windowHeight - rsize + ystep))
    y = -windowHeight + rsize - 1;     // Redraw the scene with new coordinates
        glutPostRedisplay();
        glutTimerFunc(33,TimerFunction, 1);
        }
    ///////////////////////////////////////////////////////////
    // Setup the rendering state
    void SetupRC(void)
        {
        // Set clear color to blue
        glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
        }
    ///////////////////////////////////////////////////////////
    // Called by GLUT library when the window has chanaged size
    void ChangeSize(int w, int h)
        {
        GLfloat aspectRatio;    // Prevent a divide by zero
        if(h == 0)
            h = 1;

        // Set Viewport to window dimensions
        glViewport(0, 0, w, h);    // Reset coordinate system
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();    // Establish clipping volume (left, right, bottom, top, near, far)
        aspectRatio = (GLfloat)w / (GLfloat)h;
        if (w <= h) 
            {
            windowWidth = 100;
            windowHeight = 100 / aspectRatio;
            glOrtho (-100.0, 100.0, -windowHeight, windowHeight, 1.0, -1.0);
            }
        else 
            {
            windowWidth = 100 * aspectRatio;
            windowHeight = 100;
            glOrtho (-windowWidth, windowWidth, -100.0, 100.0, 1.0, -1.0);
            }    glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        }///////////////////////////////////////////////////////////
    // Main program entry point
    int main(int argc, char* argv[])
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(800,600);
            glutCreateWindow("Bounce");
    glutDisplayFunc(RenderScene);
            glutReshapeFunc(ChangeSize);
    glutTimerFunc(33, TimerFunction, 1); SetupRC(); glutMainLoop();
            
            return 0;
        }
      

  2.   

    买本<超级宝典>的书,上面有很多例子.
      

  3.   

    这个上面程序很多 http://xthost.info/alphasun/myprogram.htm