| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:请教 starrysky 关于 OpenGL
只看楼主 加入收藏
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
结帖率:100%
收藏
 问题点数:0 回复次数:9 
请教 starrysky 关于 OpenGL
starrysky 您好。联系你很久没得到回复。

请教一下在BCB下使用OpenGL的问题。

首先我是使用BCB的form模式(不是控制台模式),那么这样的话我使用GLUT的相关初始化函数是不行的吧?(我看GLUT的初始化其实就是在创建一个窗体)

那我下了你的实例,也是直接用GL里的函数,自己先做好前期初始化函数。在下愚钝,试验了很久都没有把最基本的前期初始化函数全弄完整(实际上是我不确定我自己写的是否对,因为的确初始化成功,窗体出来了,可我往上面画简单的线点都不成功,所以我想肯定前期工作漏了什么)

看您是否能出个帖子,以BCB的FORM模式使用GL,再做一个 “画一个点”的简单实例,在下感激不尽啊。

[[italic] 本帖最后由 jig 于 2008-1-8 15:58 编辑 [/italic]]
搜索更多相关主题的帖子: OpenGL starrysky 函数 BCB form 
2008-01-08 15:57
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:0 
哥哥,还不来回帖子?

估计其他朋友也想知道怎么弄呢

找到个比较好的文章介绍:各位若有需要可以看看  [url]http://www.[/url]

个人网站 -  http://.h001.
2008-01-09 15:34
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
实在是很抱歉,最近一直在忙毕设,有很长一段时间没上网了,刚刚才看到你发的帖子

我的征途是星辰大海
2008-02-09 18:55
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分: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; //空闲时执行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::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 );
}

以上三个函数就定义了一个显示窗口

我的征途是星辰大海
2008-02-09 19:04
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
我现在在家里上网,电脑上没装BCB,等过几天我到学校再发个源代码上来

我的征途是星辰大海
2008-02-09 19:12
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
http://bbs.
在这个例子中,找到如下函数:
void __fastcall TFormMain::Draw_Out_All()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

//Draw_Out_miao(); //屏蔽掉这个函数意味着什么图形都不画,我把我画的东西用列表都整合到这个函数里了
//你可以在这里写你画图的代码,就能看到效果

glFlush();
SwapBuffers(hdc);
}

我的征途是星辰大海
2008-02-09 19:21
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
比如说:
void __fastcall TFormMain::Draw_Out_All()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

//Draw_Out_miao();
//你可以在这里写你画图的代码,就能看到效果
//画个三角形
GLfloat p1[]={0,30,0};
GLfloat p2[]={1,-5.0,0} ;
GLfloat p3[]={0,-5.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();


glFlush();
SwapBuffers(hdc);
}

[[it] 本帖最后由 starrysky 于 2008-2-9 19:28 编辑 [/it]]

我的征途是星辰大海
2008-02-09 19:26
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
当然你可以把红色的部分单独用函数写出,然后在这里调用

我的征途是星辰大海
2008-02-09 19:29
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:0 
顶~~!多谢

新年快乐啊,拜年拜年啦~~~

个人网站 -  http://.h001.
2008-02-09 20:00
starrysky
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
收藏
得分:0 
新年快乐,鼠年吉祥!

我的征途是星辰大海
2008-02-09 20:48
快速回复:请教 starrysky 关于 OpenGL
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040286 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved