在vmware中实现mesa3d的一个例子
发现vmware linux中可以运行mesa3d,而且,效果不错,这样我在家也可以调试程序了。现在决定好好看看redbook 这本书,仔细熟悉ogl每个函数的用法,通过熟悉这个,理解mesa的原理。发现mesa-6.5.2的版本刚好实现的是ogl1.5版本,根ogles1.x版本一致。
下面贴出一个triangle的程序和makefile,希望对大家有用。
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
int bDepth, bOutLine, bCull;
GLfloat xRot,yRot;
#define GL_PI 3.1415f
void RenderScene(void)
{
GLfloat x,y,angle;
int iPivot = 1;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(bCull)
glEnable(GL_CULL_FACE);
else
glDisable(GL_CULL_FACE);
if(bDepth)
glEnable (GL_DEPTH_TEST);
else
glDisable(GL_DEPTH_TEST);
if(bOutLine)
glPolygonMode(GL_BACK,GL_LINE);
else
glPolygonMode(GL_BACK,GL_FILL);
glPushMatrix();
glRotatef(xRot,1.0f,0.0f,0.0f);
glRotatef(yRot,0.0f,1.0f,0.0f);
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0.0f, 0.0f,75.0f);
for(angle=0.0f; angle<(2.0f*GL_PI); angle+=(GL_PI/8.0f))
{
x = 50.0f * sin(angle);
y = 50.0f * cos(angle);
if ((iPivot % 2)==0)
glColor3f (0.0f, 1.0f,0.0f);
else
glColor3f(1.0f, 0.0f, 0.0f);
iPivot ++;
glVertex2f(x,y);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0.0f, 0.0f,0.0f);
for(angle=0.0f; angle<(2.0f*GL_PI); angle+=(GL_PI/8.0f))
{
x = 50.0f * sin(angle);
y = 50.0f * cos(angle);
if ((iPivot % 2)==0)
glColor3f (0.0f, [...]
mesa3d的代码分析(1)
1. mesa3d版本,mesa-6.5.2,这个版本是在fedora6上能安装的,最新的版本可以在fedora10上安装,现在我采用mesa-6.5.2
2. 源码分析工具, kscope
3. 代码调试工具,kdbg
需要使用kdbg观察函数执行流程,用kscope研究代码过程。因为mesa3d用了很多宏定义及编译器相关的定义,所以需要kdbg和kscope联合调试,观测代码执行流程,总结mesa3d的架构。
fedora6中的mesa3d安装
我的linux版本是Fedora6,本来想装最新版的mesa3d,结果发现缺少库,搜索网上,找到下面这篇文章,转过来, 备份一下。我想这个版本的安装,应该也可以安装在centos4.7上。
