xcode openGL配置

    选择打赏方式

在Xcode下新建一个Command Line Tool项目

点击Build Phases,Link Binary With Libraries(0 items)


在里面寻找GLUT.framework及OpenGL.framework这两个framework,点击Add


WX20190701-200418@2x.png


//

//  main.cpp

//  wifeOpenGl

//

//  Created by zuoer on 2019/7/1.

//  Copyright © 2019年 zuoer. All rights reserved.

//


//#include <iostream>

//

//int main(int argc, const char * argv[]) {

//    // insert code here...

//    std::cout << "Hello, World!\n";

//    return 0;

//}

//仅用于测试,代码直接往上拷贝,只修改了个头文件

#include<stdio.h>


#include<GLUT/glut.h>


#include<OpenGL/gl.h>


#include<OpenGL/glu.h>








//用于绘制窗口需要的图形


void RenderScene()


{

    

        //清除颜色缓冲区,即窗口的背景色

    

       glClear(GL_COLOR_BUFFER_BIT);

    

        

    

        //设置当前绘图使用的颜色

    

      glColor3f(0.0f,0.0f, 0.0f);

    

        

    

        //使用当前的颜色来绘制一个矩形

    

    //    glRectf(100.0f, 150.0f, 150.0f, 100.0f);

    

        

    

    //   1.画点

    

        GLfloat sizesPoint[2];//保存线宽的尺寸范围

    

        GLfloat stepPoint;//保存线宽度尺寸的最小间隔

    

        GLfloat curSizePoint;

    

        

    

       glGetFloatv(GL_POINT_SIZE_RANGE,sizesPoint);

    

       glGetFloatv(GL_POINT_SIZE_GRANULARITY,&stepPoint);

    

        curSizePoint=sizesPoint[0];

    

        for (int i=0;i<25;i++) {

        

                glPointSize(curSizePoint);

        

                glBegin(GL_POINTS);

        

                glVertex3f(25.0+i*8,200.0f,0.0f);

        

                glEnd();

        

                curSizePoint +=stepPoint*2;

        

            }

    

        

    

        

    

    //  2. 画直线

    

        

    

    //    GLfloat sizesLine[2];//保存线宽的尺寸范围

    

    //    GLfloat stepLine;//保存线宽度尺寸的最小间隔

    

        GLfloat curSizeLine=5;

    

    //    glGetFloatv(GL_LINE_WIDTH_RANGE,sizesLine);

    

    //    glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&stepLine);

    

        glLineWidth(curSizeLine);

    

       glBegin(GL_LINES);

    

       glVertex3f(25.0f,160.0f,0.0f);

    

       glVertex3f(225.0f,160.0f,0.0f);

    

        

    

        glEnd();

    

        

    

    //   3.画连续的直线

    

       glBegin(GL_LINE_STRIP);

    

       glVertex3f(25.0f,150.0f,0.0f);

    

       glVertex3f(100.0f,150.0f,0.0f);

    

       glVertex3f(100.0f,130.0f,0.0f);

    

        glEnd();

    

        

    

       glBegin(GL_LINE_STRIP);

    

       glVertex3f(0.0f,0.0f,0.0f);

    

       glVertex3f(10.0f,10.0f,0.0f);

    

       glVertex3f(20.0f,5.0f,0.0f);

    

        glEnd();

    

        

    

    //   4.画封闭式直线

    

       glBegin(GL_LINE_LOOP);

    

       glVertex3f(125.0f,150.0f,0.0f);

    

       glVertex3f(200.0f,150.0f,0.0f);

    

       glVertex3f(200.0f,130.0f,0.0f);

    

        glEnd();

    

        

    

    //   画虚线

    

       glEnable(GL_LINE_STIPPLE);

    

        glLineStipple(1,0x00FF);//第一个参数是倍数,第二个参数是一个十六进制数,用来表示如何显示的

    

       glBegin(GL_LINES);

    

       glVertex3f(25.0f,120.0f,0.0f);

    

       glVertex3f(225.0f,120.0f,0.0f);

    

        glEnd();

    

        

    

        

    

       glLineWidth(3);

    

       glLineStipple(1,0xFF0C);

    

       glBegin(GL_LINES);

    

       glVertex3f(25.0f,80.0f,0.0f);

    

       glVertex3f(225.0f,80.0f,0.0f);

    

        glEnd();

    

        

    

        

    

       glLineStipple(4,0xFF0C);

    

       glBegin(GL_LINES);

    

       glVertex3f(25.0f,40.0f,0.0f);

    

       glVertex3f(225.0f,40.0f,0.0f);

    

        glEnd();

    

       glDisable(GL_LINE_STIPPLE);

    

       //刷新opengl命令队列

    

        glFlush();

    

}




//改变大小时调用的函数


void ChangeSize(GLsizei w,GLsizei h)


{

    

        if (h==0) {

        

                h=1;

        

            }

    

       //设置视区尺寸

    

        glViewport(0, 0, w, h);

    

        //重置坐标系统,使用投影变换复位

    

       glMatrixMode(GL_PROJECTION);

    

       glLoadIdentity();

    

        

    

        if (w<=h) {

        

               glOrtho (0.0f,250.0f, 0.0f,250.0f*h/w, 1.0f, -1.0f);

        

            }else

            

                {

                

                       glOrtho (0.0f,250.0f*w/h, 0.0f,250.0f, 1.0f, -1.0f);

                

                    }

    

       glMatrixMode(GL_MODELVIEW);

    

       glLoadIdentity();

    

}


//用于初始化,常用来设置场景的渲染状态


void SetupRC(void)


{

    

       glClearColor(1.0f,1.0f, 1.0f,1.0f);

    

}






int main(int argc,char** argv)


{

    

       //    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    

       //    glutCreateWindow("GLRect");

    

        

    

        glutInit(&argc, argv);

    

       //初始化GLUT库OpenGL窗口的显示模式

    

       glutInitDisplayMode (GLUT_SINGLE |GLUT_RGB |GLUT_DEPTH);

    

       glutInitWindowSize (500,500);

    

       glutInitWindowPosition (100,100);

    

       glutCreateWindow (argv[0]);

    

        

    

        

    

       glutDisplayFunc(RenderScene);

    

       glutReshapeFunc(ChangeSize);

    

        

    

        SetupRC();

    

       glutMainLoop();

    

        

    

        return 0;

    

}


版权声明:若无特殊注明,本文皆为《 zuoer 》原创,转载请保留文章出处。
本文链接:xcode openGL配置 https://www.zuoer.xin/?post=58
正文到此结束

热门推荐

管理员已关闭本篇文章评论!