19,468
社区成员
发帖
与我相关
我的任务
分享
void COpengl616View::DrawScene()
{
//为显存分配空间
int nIndex = 0;
int m_nVertexCount = 300000;
CVert* m_pVertices = new CVert[m_nVertexCount];
CCorlor* m_pCorlors = new CCorlor[m_nVertexCount];
if(m_btnisup == false)//此时鼠标左键没有up,也就是第一次显示在视区的图像
{
//读某个文件
}
else
{
//读另一个文件
}
//用顶点缓存扩展功能去画读到内存的文件
glewInit();
glGenBuffersARB( 1, &m_nVBOVertices );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOVertices );
glBufferDataARB( GL_ARRAY_BUFFER_ARB, m_nVertexCount*3*sizeof(float), m_pVertices, GL_STATIC_DRAW_ARB );
//创建一个颜色缓冲
glGenBuffersARB( 1, &m_nVBOTexCoords );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOTexCoords );
glBufferDataARB( GL_ARRAY_BUFFER_ARB, m_nVertexCount*3*sizeof(float), m_pCorlors, GL_STATIC_DRAW_ARB );
delete []m_pVertices;
m_pVertices = NULL;
delete []m_pCorlors;
m_pCorlors = NULL;
m_isVBOCreated = true;
if(m_isVBOCreated)
{
glEnableClientState( GL_VERTEX_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,m_nVBOVertices);
glVertexPointer(3, GL_FLOAT, 0, 0); //指定vbo顶点格式
glEnableClientState( GL_COLOR_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB,m_nVBOTexCoords);
glColorPointer(3, GL_FLOAT, 0, 0); //指定vbo顶点格式
glDrawArrays( GL_POINTS, 0, m_nVertexCount);
glDisableClientState( GL_VERTEX_ARRAY );
glDisableClientState( GL_COLOR_ARRAY );
glDeleteBuffersARB(1,&m_nVBOVertices);
glDeleteBuffersARB(1,&m_nVBOTexCoords);
}
SwapBuffers(wglGetCurrentDC());
}
void COpengl616View::OnLButtonUp(UINT nFlags, CPoint point)
{
m_btnisup = true;
DrawScene();
CView::OnLButtonUp(nFlags, point);
}