为什么只有黑色的背景啊?我在上面画了一条线的,可是运行后只有黑色背景,上面什么都没有。谁能帮忙看下,高手们?
int CSinDou01View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
myInitOpenGL();
return 0;
}void CSinDou01View::myInitOpenGL(void)
{ m_pDC =new CClientDC(this); //创建 DC
ASSERT(m_pDC != NULL);
if (!mySetupPixelFormat())//设定绘图的位图格式,函数下面列出
return; //创建一个上下文设备环境
m_hRC = wglCreateContext(m_pDC->GetSafeHdc()); //将刚生成的设备上下文指针设为当前环境
wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);
}
bool CSinDou01View::mySetupPixelFormat(void)
{
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL | // support OpenGL
PFD_DOUBLEBUFFER, // double buffered
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
32, // 32-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
int pixelformat;
if ( (pixelformat = ChoosePixelFormat(m_pDC->m_hDC, &pfd)) == 0 )
{
return false;
}
if (SetPixelFormat(m_pDC->m_hDC, pixelformat, &pfd) == FALSE)
{
return false;
}
//得到指定设备环境的象素模式索引
int n = ::GetPixelFormat(m_pDC->GetSafeHdc());
//根据上面得到的索引值来声明一个象素模式
::DescribePixelFormat(m_pDC->GetSafeHdc(), n, sizeof(pfd), &pfd);
return true;}
void CSinDou01View::OnDraw(CDC* /*pDC*/)
{
CSinDou01Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码 wglMakeCurrent(m_pDC->m_hDC,m_hRC) ;
//清除颜色缓冲和深度缓冲
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0,1.0,1.0,1.0);
glTranslated(0.0f,0.0f,-3.0f);//把物体沿(0,0,-1)方向平移
glColor3f(0.0, 1.0, 1.0); glBegin(GL_LINES);
glVertex3f(50, 50, 0);
glVertex3f(500, 500, 0);
glEnd(); glFinish();
//交换缓冲区数据
SwapBuffers(wglGetCurrentDC()); }
int CSinDou01View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
myInitOpenGL();
return 0;
}void CSinDou01View::myInitOpenGL(void)
{ m_pDC =new CClientDC(this); //创建 DC
ASSERT(m_pDC != NULL);
if (!mySetupPixelFormat())//设定绘图的位图格式,函数下面列出
return; //创建一个上下文设备环境
m_hRC = wglCreateContext(m_pDC->GetSafeHdc()); //将刚生成的设备上下文指针设为当前环境
wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC);
}
bool CSinDou01View::mySetupPixelFormat(void)
{
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL | // support OpenGL
PFD_DOUBLEBUFFER, // double buffered
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
32, // 32-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
int pixelformat;
if ( (pixelformat = ChoosePixelFormat(m_pDC->m_hDC, &pfd)) == 0 )
{
return false;
}
if (SetPixelFormat(m_pDC->m_hDC, pixelformat, &pfd) == FALSE)
{
return false;
}
//得到指定设备环境的象素模式索引
int n = ::GetPixelFormat(m_pDC->GetSafeHdc());
//根据上面得到的索引值来声明一个象素模式
::DescribePixelFormat(m_pDC->GetSafeHdc(), n, sizeof(pfd), &pfd);
return true;}
void CSinDou01View::OnDraw(CDC* /*pDC*/)
{
CSinDou01Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return; // TODO: 在此处为本机数据添加绘制代码 wglMakeCurrent(m_pDC->m_hDC,m_hRC) ;
//清除颜色缓冲和深度缓冲
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0,1.0,1.0,1.0);
glTranslated(0.0f,0.0f,-3.0f);//把物体沿(0,0,-1)方向平移
glColor3f(0.0, 1.0, 1.0); glBegin(GL_LINES);
glVertex3f(50, 50, 0);
glVertex3f(500, 500, 0);
glEnd(); glFinish();
//交换缓冲区数据
SwapBuffers(wglGetCurrentDC()); }
解决方案 »
- 有人把LINUX的编译环境移植到VC2008么?
- 单文档程序中如何获取主视图对象指针???
- 如果用mfc开发类似"360安全卫士"这样的软件,是不是建立"dialog based"的工程呢?
- 求解:MFC单文档应用程序中视图窗口和设备上下文之间的关系(高分相送!)
- 请问,如何利用IHTMLELEMENT 获得本地.html文件并且提取其中内容?
- ■■■■任何情况下程序自动弹出的 Dialog 窗口怎样获得焦点??
- 怎么使用dhtmled.cab控件?高分求助!
- VC编写的EXE的问题?求高手帮助
- 请教高手如何用VC++实现这样的系统
- 怎样用API把一个目录设为共享
- 如和导出Dialog中的IDD文件(从一个工程中复制到另一个工程里)
- vs2005 "在文件中查找" 无效???
glVertex3f(50, 50, 0);
glVertex3f(500, 500, 0);
glEnd();
改成
glBegin(GL_LINES);
glColor3f(0.0, 1.0, 1.0);
glVertex3f(50, 50, 0);
glVertex3f(500, 500, 0);
glEnd(); 呢
glClearColor(0.2,0.2,0.2,0.0);//添加
加了这么一句,背景色是可以变了,但是还是没有画的线显示
BOOL CUnderListView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return TRUE;
//return CView::OnEraseBkgnd(pDC);
}就可以了