在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, [...]

News, OpenGL

mesa3d的代码分析(1)

1. mesa3d版本,mesa-6.5.2,这个版本是在fedora6上能安装的,最新的版本可以在fedora10上安装,现在我采用mesa-6.5.2
2. 源码分析工具, kscope
3. 代码调试工具,kdbg
需要使用kdbg观察函数执行流程,用kscope研究代码过程。因为mesa3d用了很多宏定义及编译器相关的定义,所以需要kdbg和kscope联合调试,观测代码执行流程,总结mesa3d的架构。

News, OpenGL

fedora6中的mesa3d安装

我的linux版本是Fedora6,本来想装最新版的mesa3d,结果发现缺少库,搜索网上,找到下面这篇文章,转过来, 备份一下。我想这个版本的安装,应该也可以安装在centos4.7上。

Doc, Embedded GPU, News, OpenGL