Mac OS X Glut build instructions

 Mac OS X Glut build instructions(在Mac上用glut库编写OpenGL程序)

                                        Wentao Sun, Autodesk, Inc.

 


1. Building GLUT apps under Mac OS X

There are only a few modifications you need to make to the
  robot.c sample to get it compiled on your Mac.  These
  instructions were tested under OS X 10.3 (Panther) with XCode 1.1.
 
XCode comes with everything you need to build GL apps, including
  stable versions of OpenGL, GLUT, gcc and all the related make tools.
 

XCode by default places the include files for GLUT in a different
  location than MESA, so to build robot.c you need to change line
  46 from

#include 
<GL/glut.h>
to
#include 
<GLUT/glut.h>

After making this change you are ready to build from the command
  line:

gcc -framework GLUT -framework OpenGL -framework Cocoa
  robot.c -o robot


Note the use of the -framework option to make use
  of OS X's packaged libraries.  The Cocoa framework provides the OS
  services required by GLUT, such as interfacing with the window
  manager (Aqua).
I will post a sample makefile here which can be used to compile your files under OS X or Linux as necessary without modification; as soon as my Sutherland account is activated.

 

 Source code:

#include <iostream>
using namespace std;
#include 
<math.h>

float myAngle;
float myTime;

//codefragmentbegin,headerInclude
#include <GLUT/glut.h>

//codefragmentend,headerInclude

//codefragmentbegin,app
void prepareOpenGL()
{
    myAngle 
= 0;
    myTime 
= 0;
}

void draw()
{
    glClearColor( 
0, .5, .81 );
    glClear( GL_COLOR_BUFFER_BIT 
| GL_DEPTH_BUFFER_BIT );

    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();
    glRotatef( myAngle, 
001 );

    glTranslatef( 
001 );
    glColor3f( 
010 );
    glBegin( GL_QUADS );
    
float ww = .9;
    
float hh = .9;
    glTexCoord2f( 
00 );
    glVertex3f( 
-ww, -hh, 0 );
    glTexCoord2f( 
10 );
    glVertex3f(  ww, 
-hh, 0 );
    glTexCoord2f( 
11 );
    glVertex3f(  ww,  hh, 
0 );
    glTexCoord2f( 
01 );
    glVertex3f( 
-ww,  hh, 0 );
    glEnd();

    glutSwapBuffers();
}

void angleUpdate( int delay )
{
    
float twopi = 2 * M_PI;
    myTime 
= ( myTime > twopi ) ? 0 : myTime + .03;
    myAngle 
= sinf( twopi * myTime );
    glutTimerFunc( delay, angleUpdate, delay );
    glutPostRedisplay();
}

int main( int argc,
          
char * argv[] )
{
    glutInit( 
&argc, argv );

    
// choose a visual and create a window
    glutInitDisplayString(  "stencil>=2 rgb~8 double depth>=16 samples" );
//    glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
    glutInitWindowSize( 450300 );
    glutCreateWindow( 
"GLUT Configuration Example" );

    
// initalize our opengl (context is now valid)
    prepareOpenGL();

    
// register callback functions
    int delay = 50;
    glutTimerFunc( delay, angleUpdate, delay );
    glutDisplayFunc( draw );
    glutMainLoop();

}

//codefragmentend,app

void altinit()
{
//codefragmentbegin,stringinit
    glutInitDisplayString(  "stencil>=2 rgb~8 double depth>=16 samples" );
//codefragmentend,stringinit
}

 

Build commands:

 

 g++ -framework GLUT -framework OpenGL  main.cpp -o test

 

Run:

./test

 

 

 

Notice:

(1) Framework 类型提供的lib和其他.a & .dylib的库文件不同;

(2) 编译时使用 -framework GLUT的编译选项。


 

转载于:https://www.cnblogs.com/SunWentao/archive/2008/08/18/1270497.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨域方法

1.jsonp,原理利用script的src属性(像img,iframe等有src属性的都支持跨域)引入js文件&#xff0c;并在引入成功后调用回调函数&#xff0c;数据通过参数的形式传过来。 例&#xff1a; 2.window.name 3.document.domain 4.h5的方法&#xff1a;window.postMessage 5.flash 6.COR…

java多线程之wait_(三)java多线程之wait notify notifyAll

引言今天我打算讲一下Object.wait,Object.notify,Object.notifyAll这三个方法. 首先我们查看一下api看看,官方api对这几个方法的介绍.理论Object.wait(): 导致当前线程一直等待,直到另一外一个线程用同一个对象调用Object.notify或Object.notifyAll方法.换种说法,就是调用Objec…

2019 GDUT Rating Contest II : A. Taming the Herd

题面&#xff1a; A. Taming the Herd Input file: standard inputOutput file: standard outputTime limit: 1 secondMemory limit: 256 megabytesEarly in the morning, Farmer John woke up to the sound of splintering wood. It was the cows, and they were breaking out…

SQL server 系统优化--通过执行计划优化索引(1) (转)

SQL server 系统优化--通过执行计划优化索引&#xff08;1&#xff09; 前几天,远离上海&#xff0c;到了温州&#xff0c;在客户的这边处理系统慢&#xff0c;该系统每天正常down机7次左右&#xff0c;在线人员一多&#xff0c;系统运行缓慢&#xff0c;严重影响业务操作,到了…

C#中理解接口以及接口的作用

在C#的开发中&#xff0c;接口是非常重要也非常好用的。可是很多时候很多人都不是很了解接口的做用&#xff0c;以及该如何使用。下面我们就来理解接口的作用&#xff0c;并看看如何使用吧。假设我们公司有两种程序员&#xff1a;VB程序员&#xff0c;指的是用VB写程序的程序员…

c语言转化java工具_详解C语言常用的一些转换工具函数

1、字符串转十六进制代码实现&#xff1a;void StrToHex(char *pbDest, char *pbSrc, int nLen){char h1,h2;char s1,s2;int i;for (i0; i{h1 pbSrc[2*i];h2 pbSrc[2*i1];s1 toupper(h1) - 0x30; //toupper 转换为大写字母if (s1 > 9)s1 - 7;s2 toupper(h2) - 0x30;if (…

vue项目使用eslint

转载自 https://www.cnblogs.com/hahazexia/p/6393212.html eslint配置方式有两种&#xff1a; 注释配置&#xff1a;使用js注释来直接嵌入ESLint配置信息到一个文件里配置文件&#xff1a;使用一个js&#xff0c;JSON或者YAML文件来给整个目录和它的子目录指定配置信息。这些配…

mysql存储过程语法及实例

2019独角兽企业重金招聘Python工程师标准>>> 存储过程如同一门程序设计语言&#xff0c;同样包含了数据类型、流程控制、输入和输出和它自己的函数库。 --------------------基本语法-------------------- 一.创建存储过程 create procedure sp_name() begin ......…

计算机历年考研复试上机基础题(一)

abc 题目描述 设a、b、c均是0到9之间的数字&#xff0c;abc、bcc是两个三位数&#xff0c;且有&#xff1a;abcbcc532。求满足条件的所有a、b、c的值。输入描述: 题目没有任何输入。 输出描述: 请输出所有满足题目条件的a、b、c的值。 a、b、c之间用空格隔开。 每个输出占一行。…

CSS选择器的权重与优先规则

2019独角兽企业重金招聘Python工程师标准>>> 我们在使用CSS对网页元素定义样式时经常会遇到这种情况&#xff1a;要对一般元素应用一般样式&#xff0c;然后在更特殊的元素上覆盖它们。那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢&…

201671030130+词频统计软件项目报告

&#xff08;一&#xff09;需求分析 根据实验二 软件工程个人项目的要求该软件项目的基本功能要求如下&#xff1a; 1.程序可读入任意英文文本文件&#xff0c;该文件中英文词数大于等于1个。 2.程序需要很壮健&#xff0c;能读取容纳英文原版《哈利波特》10万词以上的文章。 …

php系统维护,软件系统维护主要包含什么

软件系统维护主要包含软件系统正常使用要求与定期维护、软件系统初始化安装的维护准备。软件是用户与硬件之间的接口界面&#xff0c;用户主要是通过软件与计算机进行交流。本文操作环境&#xff1a;windows系统、thinkpad t480电脑。(学习视频分享&#xff1a;编程视频)计算机…

一个C#写的调用外部进程类

2008-05-21 07:00 作者&#xff1a; 肖波 出处&#xff1a; 天极网 C# 调用外部进程的类&#xff0c;网上可以搜出很多来&#xff0c;为什么要再写一遍&#xff0c;实在是因为最近从网上拷贝了一个简单的例程用到项目中&#xff0c;运行有问题&#xff0c;后来研究了半天&#…

【编程题目】复杂链表的复制☆

76.复杂链表的复制&#xff08;链表、算法&#xff09;题目&#xff1a;有一个复杂链表&#xff0c;其结点除了有一个 m_pNext 指针指向下一个结点外&#xff0c;还有一个 m_pSibling 指向链表中的任一结点或者 NULL。其结点的 C定义如下&#xff1a;struct ComplexNode{ int m…

mssql sqlserver 不固定行转列数据(动态列)

mssql sqlserver 不固定行转列数据(动态列) 原文:mssql sqlserver 不固定行转列数据(动态列)转自:http://www.maomao365.com/?p5471摘要: 下文主要讲述动态行列转换语句&#xff0c;列名会根据行数据的不同&#xff0c; 动态的发生变化 -------------------------------------…

在php里让字体划过变色,鼠标划过字体时如何用css来实现字体变色?(代码实测)...

当我们在浏览网页时&#xff0c;鼠标划过某段文字会出现变色效果&#xff0c;这就是css字体变色&#xff0c;一方面是为了主动吸引人用户目光去点击&#xff0c;另一方面是为了防止用户点击错其他文字段落。其实这种css鼠标经过字体变色的效果是非常容易实现的。只要你略懂css知…

初识python之 APP store排行榜 蜘蛛抓取(一)

直接上干货&#xff01;&#xff01; 采用python 2.7.5-windows 打开 http://www.apple.com/cn/itunes/charts/free-apps/ 如上图可以见采用的是utf-8 编码 经过一番思想斗争 编码如下 &#xff08;拍砖别打脸&#xff09; #codingutf-8 import urllib2 import urllib …

PP团队圣经巨著《Application Architecture Guide2.0》14章-数据访问层

第十四章 数据访问层指导 概览 这一章主要描述设计数据访问层时要注意的主要原则。它们覆盖了设计数据访问层遇到的通常问题及错误。下面的图表展示了数据层怎样嵌入一个通用的应用架构。 (cnblog我的图片一直上传不了&#xff0c;报Remote server Error,只能使用网络图片了) 数…

20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1

第03节: 不规则底部工具栏制作-1 博客地址&#xff1a; https://jspang.com/post/flutterDemo.html#toc-973 视频地址&#xff1a; https://www.bilibili.com/video/av39709290?p3 视频里面的评论&#xff1a;动态组件就是可以setState的组件 flutter create demo02的项目 这里…

python模块之smtplib: 用python发送SSL/TLS安全邮件

转载请注明原文出自 http://blog.csdn.net/zhaoweikid/ python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。smtp协议的基本命令包括&#xff1a; HELO 向服务器标识用户身份 MAIL 初始化邮件传输 mail from: RCPT 标识单个的邮件…