注册 登录
编程论坛 C图形专区

[原创]基于OpenGL的时钟

starrysky 发布于 2006-05-27 11:22, 7399 次点击

为庆祝C图形编辑专区开放,专门做的一个小东东
因为只用了3个小时,所以图形不是很精细,功能也不是很完善,无法调整时间,在这个程序中, 你可以明显的看到钟面上有块玻璃, 支持鼠标拉动,点右键复原. 为了方便观看时针效果,特设了1000倍速的时间选项.
本程序是用BC++6.0编译的.以下是原代码

只有本站会员才能查看附件,请 登录


Unit1.h
**********************
//------------------------------------------
#ifndef Unit1H
#define Unit1H
//-------------------------------------
//--------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Menus.hpp>
#include <gl\gl.h>
#include <gl\glu.h>
#include <math.h>
//---------------

//------------
class TFormMain : public TForm
{
__published: // IDE-managed Components
TPanel *Control_Zone;

TTimer *Timer1;
TMainMenu *MainMenu1;
TMenuItem *File1;
TMenuItem *Exit1;
TMenuItem *N10001;
TMenuItem *N1;

void __fastcall FormResize( TObject *Sender);
void __fastcall FormCreate( TObject *Sender);
void __fastcall FormMouseMove( TObject *Sender, TShiftState Shift, int X,int Y);
void __fastcall FormMouseDown( TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y );
void __fastcall FormMouseUp( TObject *Sender, TMouseButton Button,TShiftState Shift, int X, int Y );
void __fastcall FormMouseWheelDown( TObject *Sender, TShiftState Shift, TPoint &MousePos, bool &Handled );
void __fastcall FormMouseWheelUp( TObject *Sender, TShiftState Shift, TPoint &MousePos, bool &Handled );

void __fastcall Timer1Timer(TObject *Sender);
void __fastcall Exit1Click(TObject *Sender);
void __fastcall N10001Click(TObject *Sender);
void __fastcall N1Click(TObject *Sender);


private: // User declarations
HDC hdc;
float w, h;
int PixelFormat,x,y;
int I;
float zoom,M,J,K,n,N;
HGLRC hrc;
GLuint list_of_objects,waike;
Graphics::TBitmap* bitmap;
BOOL Left_Button_Down,inclined,key_and_mouse_down;

int loop;

public: // User declarations
__fastcall TFormMain(TComponent* Sender);
void __fastcall IdleLoop(TObject*, bool&);
void __fastcall SetPixelFormatDescriptor();
void __fastcall SetupLighting();
void __fastcall SetupTextures();
void __fastcall FormPaint( TObject *Sender );
void __fastcall Prepare_All();
void __fastcall Prepare_miao();
void __fastcall Prepare_fen();
void __fastcall Prepare_shi();
void __fastcall Prepare_pan();

void __fastcall Normal(float*p1,float*p2,float*p3,float*n);
void __fastcall Draw_Out_All();
void __fastcall Draw_Out_miao();

};
//---------------------------------------------------------------------------
extern PACKAGE TFormMain *FormMain;
//-------------
#endif

******************************





[此贴子已经被作者于2006-5-28 14:16:26编辑过]

31 回复
#2
starrysky2006-05-27 11:24
Unit1.cpp
****************************
//----------------
#include "stdio.h"
#include <vcl.h>
#include "Unit1.h"
#include "math.h"
//----------------
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
//-------------------------------------

GLfloat Throttle=5;
GLfloat glow=.4;
GLfloat glowp=0;
//------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Sender)
: TForm(Sender)
{
hdc = GetDC(Handle);
Control_Zone->Top =0 ;
Control_Zone->Left =FormMain->Width;
Control_Zone->Width = 0;
Control_Zone->Height = FormMain->Height;


float nRange =75.0;
w = ClientWidth ;
h = ClientHeight;
if( h==0 ) h = 1;
if ( w<=h ) glOrtho( -nRange, nRange, -nRange*h/w,nRange*h/w,-nRange,nRange );
else glOrtho( -nRange*w/h,nRange*w/h,-nRange, nRange, -nRange,nRange );


Application->OnIdle = IdleLoop;
Left_Button_Down = FALSE;
key_and_mouse_down = FALSE;
inclined = TRUE;//FALSE;
zoom = 0.99;
}
//-------------------
void __fastcall TFormMain::FormResize(TObject *Sender)
{
Control_Zone->Top = 0;
Control_Zone->Left = Control_Zone->ClientWidth;
Control_Zone->Width = 0;
Control_Zone->Height=ClientHeight;

float nRange =75.0;
w = ClientWidth ;
h = ClientHeight;
if( h==0 ) h = 1;

glViewport(0, 0, w, h);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();

if ( w<=h ) glOrtho( -nRange, nRange, -nRange*h/w,nRange*h/w,-nRange,nRange );
else glOrtho( -nRange*w/h,nRange*w/h,-nRange, nRange, -nRange,nRange );

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
inclined = TRUE;
key_and_mouse_down = FALSE;
}
void __fastcall TFormMain::IdleLoop(TObject*, bool& done)
{
done = false;
if( inclined==FALSE )
{
inclined = TRUE;
}
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_POINT_SMOOTH);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);
Draw_Out_All();
SwapBuffers(hdc);
}
//-------------------
void __fastcall TFormMain::SetPixelFormatDescriptor()
{
PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR),1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,24,
0,0,0,0,0,0,
0,0,
0,0,0,0,0,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
PixelFormat = ChoosePixelFormat(hdc, &pfd);
SetPixelFormat( hdc, PixelFormat, &pfd );
}
void __fastcall TFormMain::SetupLighting()
{
float MaterialAmbient[] = { 0.6, 0.6, 0.6, 1.0 };
float MaterialDiffuse[] = { 0.8, 0.8, 0.8, 1.0 };
float MaterialSpecular[] = { 1.0, 1.0, 1.0, 1.0 };
float MaterialShininess[] = { 80.0 };
glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT, MaterialAmbient );
glMaterialfv( GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialDiffuse );
glMaterialfv( GL_FRONT_AND_BACK, GL_SPECULAR, MaterialSpecular );
glMaterialfv( GL_FRONT_AND_BACK, GL_SHININESS, MaterialShininess);


float AmbientLightPosition[] = { 20, -20, 30.0, 0.0 };
float LightAmbient[] = { 0.5, 0.5, 0.5, 1.0 };
glLightfv(GL_LIGHT0, GL_POSITION, AmbientLightPosition);

glLightModelfv(GL_LIGHT_MODEL_AMBIENT, LightAmbient);
glLightModelf(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE);


glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
glEnable( GL_COLOR_MATERIAL );


glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );

glShadeModel( GL_SMOOTH );
glEnable(GL_POLYGON_SMOOTH);
}
void __fastcall TFormMain::FormPaint( TObject *Sender )
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glFlush();
}

void __fastcall TFormMain::FormCreate(TObject *Sender)
{
hdc = GetDC( Handle );
SetPixelFormatDescriptor();

hrc = wglCreateContext( hdc );
if( hrc == NULL ) ShowMessage("对不起,GL设备描述表是空的。");
if( wglMakeCurrent(hdc, hrc) == false ) ShowMessage("对不起 MakeCurrent() 执行不了。");
w = ClientWidth;
h = ClientHeight;

glEnable( GL_DEPTH_TEST );
glDisable( GL_CULL_FACE );
glClearColor(0.0f,0.0f, 0.4f, 0.0f);
SetupLighting();
N=1000;
Prepare_All();
}
//---------------------------
void __fastcall TFormMain::FormMouseDown(TObject *Sender,TMouseButton Button, TShiftState Shift, int X, int Y)
{
if( Button==mbLeft )
{
Left_Button_Down = TRUE;
key_and_mouse_down = TRUE;
x = X;
y = Y;
}
else if( Button==mbRight )
{
glLoadIdentity();
inclined = TRUE;
Left_Button_Down = FALSE;
key_and_mouse_down = FALSE;
}
else
Left_Button_Down = FALSE;
}
void __fastcall TFormMain::FormMouseUp(TObject *Sender,TMouseButton Button, TShiftState Shift, int X, int Y)
{
Left_Button_Down = FALSE;
}
void __fastcall TFormMain::FormMouseMove(TObject *Sender,TShiftState Shift, int X, int Y)
{
if( Left_Button_Down==TRUE )
{
if( x != X )
glRotatef( (X-x)/4, 0.0, 1.0, 0.0);
if( y != Y )
glRotatef( (Y-y)/4, 1.0, 0.0, 0.0);
x = X;
y = Y;
}
}
void __fastcall TFormMain::FormMouseWheelDown(TObject *Sender,TShiftState Shift, TPoint &MousePos, bool &Handled)
{
glScalef( zoom,zoom,zoom );
}
void __fastcall TFormMain::FormMouseWheelUp(TObject *Sender,TShiftState Shift, TPoint &MousePos, bool &Handled)
{
glScalef( 1/zoom,1/zoom,1/zoom );
}

void __fastcall TFormMain::Normal( float*p1,float*p2,float*p3,float*n )
{
float A[3], B[3], l;
A[0] = p1[0] - p2[0];
A[1] = p1[1] - p2[1];
A[2] = p1[2] - p2[2];

B[0] = p3[0] - p2[0];
B[1] = p3[1] - p2[1];
B[2] = p3[2] - p2[2];

n[0] = B[1]*A[2] - B[2]*A[1];
n[1] = B[2]*A[0] - B[0]*A[2];
n[2] = B[0]*A[1] - B[1]*A[0];

l = sqrt(n[0]*n[0] + n[1]*n[1] + n[2]*n[2]);
if(l!=0)
{
n[0]=n[0]/l;
n[1]=n[1]/l;
n[2]=n[2]/l;
}
}
//----
//-----------------
void __fastcall TFormMain::Prepare_All()
{
list_of_objects = glGenLists(4);
Prepare_miao();
Prepare_fen();
Prepare_shi();
Prepare_pan();
}

//


void __fastcall TFormMain::Prepare_miao()
{

GLUquadricObj *quadObj;
glNewList(list_of_objects,GL_COMPILE);

GLfloat p1[]={0,30,0};
GLfloat p2[]={1,-5.0,0} ;
GLfloat p3[]={0,-5.0,0.5};

GLfloat m[3];GLfloat n[3];
Normal(p1,p2,p3,m);
Normal(p3,p2,p1,n);
glBegin(GL_POLYGON);
glColor3f(0.8,0.0,0.0);
glNormal3f(m[0],m[1],m[2]);
glVertex3f(p1[0],p1[1],p1[2]);
glVertex3f(p2[0],p2[1],p2[2]);
glVertex3f(p3[0],p3[1],p3[2]);
glEnd();

GLfloat p4[]={-1,-5.0,0};

GLfloat j[3];GLfloat k[3];
Normal(p1,p3,p4,j);
Normal(p4,p3,p1,k);
glBegin(GL_POLYGON);
glColor3f(0.8,0.0,0.0);
glNormal3f(j[0],j[1],j[2]);
glVertex3f(p1[0],p1[1],p1[2]);
glVertex3f(p3[0],p3[1],p3[2]);
glVertex3f(p4[0],p4[1],p4[2]);
glEnd();


glEndList();
}
void __fastcall TFormMain::Prepare_fen()
{
GLUquadricObj *quadObj;
glNewList(list_of_objects+1,GL_COMPILE);

GLfloat p1[]={0,20,0};
GLfloat p2[]={1.5,-5.0,0} ;
GLfloat p3[]={0,-5.0,0.5};

GLfloat m[3];GLfloat n[3];
Normal(p1,p2,p3,m);
Normal(p3,p2,p1,n);
glBegin(GL_POLYGON);
glColor3f(0.3,0.3,0.3);
glNormal3f(m[0],m[1],m[2]);
glVertex3f(p1[0],p1[1],p1[2]);
glVertex3f(p2[0],p2[1],p2[2]);
glVertex3f(p3[0],p3[1],p3[2]);
glEnd();

GLfloat p4[]={-1.5,-5.0,0};

GLfloat j[3];GLfloat k[3];
Normal(p1,p3,p4,j);
Normal(p4,p3,p1,k);
glBegin(GL_POLYGON);
glColor3f(0.3,0.3,0.3);
glNormal3f(j[0],j[1],j[2]);
glVertex3f(p1[0],p1[1],p1[2]);
glVertex3f(p3[0],p3[1],p3[2]);
glVertex3f(p4[0],p4[1],p4[2]);
glEnd();
glEndList();
}
void __fastcall TFormMain::Prepare_shi()
{
GLUquadricObj *quadObj;
glNewList(list_of_objects+2,GL_COMPILE);

GLfloat p1[]={0,15,0};
GLfloat p2[]={2.5,0,0} ;
GLfloat p3[]={0,0,0.9};

GLfloat m[3];GLfloat n[3];
Normal(p1,p2,p3,m);
Normal(p3,p2,p1,n);
glBegin(GL_POLYGON);
glColor3f(0.1,0.1,0.1);
glNormal3f(m[0],m[1],m[2]);
glVertex3f(p1[0],p1[1],p1[2]);
glVertex3f(p2[0],p2[1],p2[2]);
glVertex3f(p3[0],p3[1],p3[2]);
glEnd();

GLfloat p4[]={-2.5,0,0};

GLfloat j[3];GLfloat k[3];
Normal(p1,p3,p4,j);
Normal(p4,p3,p1,k);
glBegin(GL_POLYGON);
glColor3f(0.1,0.1,0.1);
glNormal3f(j[0],j[1],j[2]);
glVertex3f(p1[0],p1[1],p1[2]);
glVertex3f(p3[0],p3[1],p3[2]);
glVertex3f(p4[0],p4[1],p4[2]);
glEnd();
glPushMatrix();
glColor3f(0.1,0.1,0.1);
quadObj=gluNewQuadric();
gluQuadricNormals(quadObj,GLU_SMOOTH);
gluCylinder(quadObj,4,0,0.9,36,2);
glPopMatrix();
glEndList();
}

void __fastcall TFormMain::Prepare_pan()
{
GLUquadricObj *quadObj;
glNewList(list_of_objects+3,GL_COMPILE);
glPushMatrix();
glColor3f(0.5,0.5,0.5);
quadObj=gluNewQuadric();
gluQuadricNormals(quadObj,GLU_SMOOTH);
glTranslatef(0,0,2);
gluCylinder(quadObj,2,0,1,36,2);
glTranslatef(0,0,-2.5);
gluCylinder(quadObj,2,2,2.5,36,2);
glPopMatrix();
glPushMatrix();
glColor3f(0.5,0.5,0.5);
quadObj=gluNewQuadric();
gluQuadricNormals(quadObj,GLU_SMOOTH);
gluCylinder(quadObj,32,0,0,360,2);
gluCylinder(quadObj,32,34,4,360,2);
glTranslatef(0,0,-1);
gluCylinder(quadObj,38,0,0,360,2);
gluCylinder(quadObj,38,37,5,360,2);
glTranslatef(0,0,5);
gluCylinder(quadObj,34,37,0,360,2);
glPopMatrix();
glPushMatrix();
glColor4f(0.4,0.4,0.4,0.7);
glTranslatef(0,0,3);
gluCylinder(quadObj,34,0,0,360,2);
glPopMatrix();
glEndList();
}

//------------------------------------------------------------------------------
void __fastcall TFormMain::Draw_Out_All()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

Draw_Out_miao();
glFlush();
SwapBuffers(hdc);
}

void __fastcall TFormMain::Draw_Out_miao()
{


glPushMatrix();
glTranslatef(0,0,1.5);
glRotatef(-n,0,0,1 );
glCallList(list_of_objects);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0,1);
glRotatef(-J,0,0,1 );
glCallList(list_of_objects+1);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0,0.1);
glRotatef(-K,0,0,1 );
glCallList(list_of_objects+2);
glPopMatrix();
glPushMatrix();
glCallList(list_of_objects+3);
glPopMatrix();
}


//---------------------------------------------------------------------------

void __fastcall TFormMain::Timer1Timer(TObject *Sender)
{


Timer1->Interval=N;
n+=6;J+=0.1;
if(n==360){n=0;K+=0.5 ;}
if(J==360)J=0;
if(K==360)K=0;
Yield();
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::Exit1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

void __fastcall TFormMain::N10001Click(TObject *Sender)
{
N=1;
}
//---------------------------------------------------------------------------

void __fastcall TFormMain::N1Click(TObject *Sender)
{
N=1000;
}
//---------------------------------------------------------------------------

************************


下面是效果图

只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2006-5-28 14:09:10编辑过]

#3
Knocker2006-05-27 11:27
传个EXE上来看看
#4
starrysky2006-05-27 11:29

顶楼里面不是有吗?

#5
starrysky2006-05-27 11:29

和原代码放一起压缩了

#6
starrysky2006-05-27 11:31
单独的EXE文件

只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2006-5-28 14:18:34编辑过]

#7
Knocker2006-05-27 11:32
程序有问题 运行后死机
系统 windows 2003
#8
starrysky2006-05-27 11:36
,不知老K你的显卡如何?
有些老显卡跑起来会出问题
#9
starrysky2006-05-27 11:38
我到别人的电脑上去试试
#10
Knocker2006-05-27 11:41
以下是引用starrysky在2006-5-27 11:36:00的发言:
,不知老K你的显卡如何?
有些老显卡跑起来会出问题

可能吧,我是老掉牙显卡了

#11
starrysky2006-05-27 11:45
程序没有问题
我在另外2台电脑上运行都没问题
#12
SunShining2006-05-27 11:45
看来我的显卡也老掉牙了!
#13
starrysky2006-05-27 11:49
我的电脑
操作系统:XP-SP2
显卡:ATI9800SE
内存:512
P4 2.4G

同学的电脑1
操作系统:XP-SP2
显卡:ATI9550
内存:256
AMD 2500+

同学的电脑2
操作系统:XP-SP2
显卡:ATI9550
内存:768
AMD 2800+
#14
feng12562006-05-27 12:21
可以运行,棒! 不过打开之后得等一会,才能看到表,开始看不见表!
#15
一笔苍穹2006-05-27 12:30
顶一下,我这边也正常运行了,显卡是GF4 MX440
#16
starrysky2006-05-27 12:42
能运行就好,我还以为我搞了个奢侈品出来了。
这样就好了
#17
Knocker2006-05-27 13:26

NVIDIA RIVA TNT2

只有本站会员才能查看附件,请 登录

等了10分钟了,还是这样

[此贴子已经被作者于2006-5-27 13:27:27编辑过]

#18
starrysky2006-05-27 13:50
老K,是不是你内存太小或是CPU太慢啊。
TNT2
好象对OpenGL的支持很差,因为当时微软对OpenGL采取的是打压的政策,甚至用不正当的手段,以保证DirectX 的优势,所以当时大多数的显卡商迫于微软的淫威而对OpenGL的支持普遍很差。
这种情况直到1999年以后才有所改观,2001年以后OpenGL才获得较好的支持。我家以前的电脑显卡是99年买的N卡5200,完全跑不了OpenGL的程序。
#19
Knocker2006-05-27 14:14
[QUOTE]老K,是不是你内存太小或是CPU太慢啊。[/QUOTE]
PII 233 + 160 M
#20
feng12562006-05-27 15:17
160M ?内存? 还有这里数字的?
#21
一笔苍穹2006-05-27 16:24
160 = 128 + 32 = 64 + 64 + 32 = 128 + 16 +16 = ...
K的机子比我前些时候在学校那台还低些,我那台是Celeron 733M(超的) + 320M + MX440,那个时候我最受不了的就是3D渲模,其它上上网写写程序打打CS还行。我用了两年多,现在终于告别它了。这年头用老机不容易啊~~

楼主说99年和GF 5200卡跑不了OpenGL?我以前用TNT2也能跑啊?估计是你们的显卡驱动用的是M$默认自带的吧,那玩意里面没有提供对OpenGL 的硬件加速支持!建议跑不动的不管是TNT卡还是GF卡统统下各自的官方驱动装上,http://www.mydrivers.com里能找到,至于版本GF5200以下的用60.XX以下的,GF5200及之上的用更高的,推荐使用77.76或这个版本的相关修改版(如DNA加速版),更高的比如GF7的卡则是找最新的驱动!升级驱动了还不行的再来讨论~~

因为是图形编程专栏,咱们三句话不离本行,下面顺带介绍一下DX和OpenGL 发展的历史背景:
由于M$的打压OpenGL 一直就升级缓慢,N卡对OPENGL的支持其实也不差,相反来说应该是支持的不错,你想想啊DX从1.0到9.0只用了10年时间,平均1年一次更新,不论N卡A卡,对层出不穷的新版DX支持不够才是真的,有多少人的卡跑3D MARK 2005能够每个子测试都全部完成,我的MX440才跑个3D MARK 2001时就有几项是“No hardware supporting,skip...”。更恐怖的是3DMark 2006所有测试都需要支持SM3.0的DirectX 9显卡,不过只支持SM2.x的硬件也可以运行大部分测试,所以显卡的升级都在根着DX跑。
而反过来看SGI推出OpenGL 1.1版是在95年,这和DX 1.0发布的时间差不多,而直到2001年才升级到1.3,经过1.4于2003年升级到1.5,而OpenGL 1.0推出后的相当长的一段时间里,OpenGL 唯一做的只是增加了一些扩展指令集,而不是功能的改进和增加,直到05年8月的2.0出世才有了质的变化:譬如复杂的核心被彻底精简、完全的硬件可编程能力、改进的内存管理机制、支持高级像素处理、支持嵌入式图形应用等等。
所以相比之下,只要你的显卡支持OpenGL 的任何一个版本,在买回来的2、3年里都不会“过时”,而这个周期,对于DX来讲仅仅只有1年。
#22
一笔苍穹2006-05-27 16:32
顺便再和starrysky说个事:麻烦你在我刚发的那篇《给我一个画点函数,我能描绘出整个世界》一帖中按我原来的那种模式加上《OpenGL篇》一节,我今天写了半天了,人都快写蠢了,感谢不尽~~~

[此贴子已经被作者于2006-5-27 16:33:37编辑过]


#23
starrysky2006-05-27 17:45
哎呀, 艰巨的任务啊........
不过斑竹大人开口了, 在下一定尽力
#24
xiaowei19842006-05-30 14:58
我在VC++6.0里怎么不好用啊
#25
starrysky2006-05-30 18:22
这个是用C++Build6.0编的,格式都是C++Build6.0,所以在VC里面不好用。
#26
yuleol2006-07-06 01:08
为什么在我的机子(windows2000 sp4 CPU:1.7 256内存,板载显卡共享16M显存!)上运行是这样的?

#27
SunShining2006-07-06 12:31
以下是引用yuleol在2006-7-6 1:08:49的发言:
板载显卡共享16M显存

#28
starrysky2006-07-06 22:24
以下是引用yuleol在2006-7-6 1:08:49的发言:
板载显卡共享16M显存
这个恐怕不行.
#29
yuleol2006-07-06 22:53
不是吧,一个小程序对配置要求这么高~~~

用我的机子玩CS都没问题~~~
#30
一笔苍穹2006-07-07 10:12
你得确认你的CS用的是OPENGL加速,而不是DX或软加速呢~~
#31
Lydolphin2006-07-31 18:36
我的也有问题....
双128的显卡...
#32
starrysky2006-08-03 21:23
以下是引用Lydolphin在2006-7-31 18:36:49的发言:
我的也有问题....
双128的显卡...

是编译有问题还是运行时有问题啊?
如果运行显示有问题, 可能是系统里面没有opengl32.dll 这个驱动文件(好像是在windows/system里面吧)

[此贴子已经被作者于2006-8-3 21:24:11编辑过]

1