【高分求】OpenGL绘制的图形如何保存?急,在线等!

yf2100 2004-10-19 01:13:07

这两天用OpenGL编了个三维免刑显示程序,但是不知道用OpenGL在Form上绘制图形后如何保存?

请路过的兄弟指点!谢谢!
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yf2100 2004-10-19
  • 打赏
  • 举报
回复
自己谢了一小段测试的,终于搞定了,呵呵,不敢独享。

测试程序,所以写的不好,本来应该根据窗体大小使用动态内存分配的,另外结合TJPEGImage可以保存为JPG文件:)正在完成中,多谢各位的指教,结贴咯:)

//---------------------------------------------------------------------------
void __fastcall TfrmResult::menuSaveCurrentClick(TObject *Sender)
{
byte r[600][800];
byte g[600][800];
byte b[600][800];

if(OD->Execute())
{
Graphics::TBitmap *tmpBMP=new Graphics::TBitmap();
tmpBMP->Assign(this->GetFormImage());

HDC hDC=GetDC(this->Handle);
wglMakeCurrent(hDC,hRC);
glReadPixels(0,0,800,600,GL_RED,GL_UNSIGNED_BYTE,r);
glReadPixels(0,0,800,600,GL_GREEN,GL_UNSIGNED_BYTE,g);
glReadPixels(0,0,800,600,GL_BLUE,GL_UNSIGNED_BYTE,b);
wglMakeCurrent(NULL,NULL);
for(int j=0;j<800;j++) for(int i=0;i<600;i++) tmpBMP->Canvas->Pixels[j][i]=RGB(r[i][j],g[i][j],b[i][j]);

tmpBMP->SaveToFile(OD->FileName);
delete tmpBMP;
}
}

//---------------------------------------------------------------------------
yf2100 2004-10-19
  • 打赏
  • 举报
回复
WMF、EMF还算是矢量文件。其实什么格式无关紧要,只要是图片就行,BMP应该是最简单的吧,但是用glReadPixels总搞不定
Lewolf 2004-10-19
  • 打赏
  • 举报
回复
啊,这样啊,那你还是存成WMF格式吧,不算矢量,但是好保存一些,windows本身就可以察看的。
yf2100 2004-10-19
  • 打赏
  • 举报
回复
矢量当然好,但是怎么用普通的看图软件查看?我总不能要求用户查看结果时还要安装我得软件吧:(
Lewolf 2004-10-19
  • 打赏
  • 举报
回复
我觉得还是保存为矢量的方式比较好的,也就是参数绘图的那种格式
yf2100 2004-10-19
  • 打赏
  • 举报
回复
就是为了保存标量图片,查到了函数glReadPixels,但是搞不定,读出来的数据不知道什么格式:(

The glReadPixels function reads a block of pixels from the frame buffer.

void glReadPixels(
GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLenum format,
GLenum type,
GLvoid *pixels
);
醉马不肖 2004-10-19
  • 打赏
  • 举报
回复
如果保存只是为了显示,存成bmp

如果还想编辑就存矢量(绘制命令),这样在下次读去时,只要执行对应命令就可以了

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧