CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

为什么我用OpenGL画的图形显示不出来?

楼主sujinzhao407(摇风清影)2004-05-02 22:15:40 在 VC/MFC / 基础类 提问

我在MFC下用OpenGL画了一条直线,但是不知道为什么显示不出来?请教高手!其中,View.cpp里的代码如下:  
  void   CLineView::OnDraw(CDC*   pDC)  
  {  
  CLineDoc*   pDoc   =   GetDocument();  
  ASSERT_VALID(pDoc);  
  //   TODO:   add   draw   code   for   native   data   here  
                     
                    RenderScene();  
  }  
   
  //   CLineView   message   handlers  
  BOOL   CLineView::InitializeOpenGL(CDC*   pDC)  
  {  
          m_pDC   =   pDC;  
  SetupPixelFormat();  
  //生成绘制描述表  
  m_hRC   =   ::wglCreateContext(m_pDC->GetSafeHdc());  
  //置当前绘制描述表  
  ::wglMakeCurrent(m_pDC->GetSafeHdc(),   m_hRC);  
   
  return   TRUE;  
  }  
   
  BOOL   CLineView::RenderScene()    
  {  
          glClearColor(0.0,0.0,0.0,0.0);  
          glClear(GL_COLOR_BUFFER_BIT   |GL_DEPTH_BUFFER_BIT);  
          glBegin(GL_LINES);  
  glColor3f   (1.0,   0.0,   0.0);  
  glVertex2i(10,20);  
  glVertex2i(100,200);  
          glEnd();  
          glFlush();  
   
          ::SwapBuffers(m_pDC->GetSafeHdc()); //交互缓冲区  
          return   TRUE;  
  }  
   
  //////////////////////////////////////////////////////////////////////  
  //                                     设置逻辑调色板  
  //////////////////////////////////////////////////////////////////////  
  void   CLineView::SetLogicalPalette(void)  
  {  
          struct  
          {  
                  WORD   Version;  
                  WORD   NumberOfEntries;  
                  PALETTEENTRY   aEntries[256];  
          }   logicalPalette   =   {   0x300,   256   };  
   
  BYTE   reds[]   =   {0,   36,   72,   109,   145,   182,   218,   255};  
  BYTE   greens[]   =   {0,   36,   72,   109,   145,   182,   218,   255};  
  BYTE   blues[]   =   {0,   85,   170,   255};  
   
          for   (int   colorNum=0;   colorNum<256;   ++colorNum)  
          {  
                  logicalPalette.aEntries[colorNum].peRed   =  
                          reds[colorNum   &   0x07];  
                  logicalPalette.aEntries[colorNum].peGreen   =  
                          greens[(colorNum   >>   0x03)   &   0x07];  
                  logicalPalette.aEntries[colorNum].peBlue   =  
                          blues[(colorNum   >>   0x06)   &   0x03];  
                  logicalPalette.aEntries[colorNum].peFlags   =   0;  
          }  
   
          m_hPalette   =   CreatePalette   ((LOGPALETTE*)&logicalPalette);  
  }  
   
  //////////////////////////////////////////////////////////  
  // 设置像素格式  
  //////////////////////////////////////////////////////////  
  BOOL   CLineView::SetupPixelFormat()  
  {  
  PIXELFORMATDESCRIPTOR   pfd   =   {    
          sizeof(PIXELFORMATDESCRIPTOR),         //   pfd结构的大小    
          1,                                                                 //   版本号    
          PFD_DRAW_TO_WINDOW   |                             //   支持在窗口中绘图    
          PFD_SUPPORT_OPENGL   |                             //   支持   OpenGL    
          PFD_DOUBLEBUFFER,                                   //   双缓存模式    
          PFD_TYPE_RGBA,                                         //   RGBA   颜色模式    
          24,                                                               //   24   位颜色深度    
          0,   0,   0,   0,   0,   0,                                   //   忽略颜色位    
          0,                                                                 //   没有非透明度缓存    
          0,                                                                 //   忽略移位位    
          0,                                                                 //   无累加缓存    
          0,   0,   0,   0,                                               //   忽略累加位    
          32,                                                               //   32   位深度缓存            
          0,                                                                 //   无模板缓存    
          0,                                                                 //   无辅助缓存    
          PFD_MAIN_PLANE,                                       //   主层    
          0,                                                                 //   保留    
          0,   0,   0                                                       //   忽略层,可见性和损毁掩模    
  };    
  int   pixelformat;  
  pixelformat   =   ::ChoosePixelFormat(m_pDC->GetSafeHdc(),   &pfd);//选择像素格式  
  ::SetPixelFormat(m_pDC->GetSafeHdc(),   pixelformat,   &pfd); //设置像素格式  
  if(pfd.dwFlags   &   PFD_NEED_PALETTE)  
  SetLogicalPalette(); //设置逻辑调色板  
  return   TRUE;  
  }  
   
  int   CLineView::OnCreate(LPCREATESTRUCT   lpCreateStruct)    
  {  
  if   (CView::OnCreate(lpCreateStruct)   ==   -1)  
  return   -1;  
   
  //   TODO:   Add   your   specialized   creation   code   here  
  //初始化OpenGL  
  m_pDC   =   new   CClientDC(this);  
  InitializeOpenGL(m_pDC);  
   
  return   0;  
  }  
   
  void   CLineView::OnDestroy()    
  {  
  CView::OnDestroy();  
   
  //   TODO:   Add   your   message   handler   code   here  
  //删除调色板和渲染上下文、定时器  
  ::wglMakeCurrent(NULL,NULL);  
  ::wglDeleteContext(   m_hRC);  
  if   (m_hPalette)  
          DeleteObject(m_hPalette);  
  if   (   m_pDC   )  
  {  
  delete   m_pDC;  
  }  
   
  } 问题点数:0、回复次数:5Top

1 楼wq85(a)回复于 2004-05-02 22:57:40 得分 0

你便没有初始化"相机“的位置,现在你的相机在原点Top

2 楼nuaawenlin(飘人)回复于 2004-05-02 23:20:36 得分 0

还没有设置投影模式Top

3 楼dzqsuper(数风流人物-还看打倒日本猪的人(抵制日货))回复于 2004-05-03 08:13:42 得分 0

正想学OpenGL  
  请大家给点建议  
  或是推荐一下好电子书  
   
  有的请发给我好吗  
  dzqsuper@sohu.comTop

4 楼XmagicX(一瞬已成永恒 http://codeday.com)回复于 2004-05-03 09:35:08 得分 0

UPTop

5 楼sujinzhao407(摇风清影)回复于 2004-05-03 16:26:18 得分 0

谢谢各位大哥,我现在已经画出来了!谢谢!Top

相关问题

  • 在TImage 上画opengl图形。
  • 显示图形
  • 图形显示
  • 图形显示
  • 怎样显示auto CAD 画出来的图形
  • 关于所画图形的滚动显示
  • 求救大虾,急!所画图形的滚动显示!!!!!!!!!!!
  • 急!!画WEB曲线图,图形显示,大家帮忙!
  • 在对话框中如何显示OPENGL绘制的图形(给200~1000分)
  • ? 在对话框中如何显示OPENGL绘制的图形(给200~1000分)

关键词

  • opengl
  • clineview
  • pfd
  • 缓存
  • pdc
  • logicalpalette
  • colornum
  • getsafehdc
  • 忽略
  • 颜色

得分解答快速导航

  • 帖主:sujinzhao407

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo