wined3d: Do not try to create a vbo more than once.

This commit is contained in:
Stefan Dösinger 2006-07-21 14:02:44 +02:00 committed by Alexandre Julliard
parent d637aa3581
commit 9423fd2d9f
2 changed files with 7 additions and 0 deletions

View File

@ -611,6 +611,11 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
IWineD3DDeviceImpl *This = object->resource.wineD3DDevice; /* Needed for GL_EXTCALL */
GLenum error, glUsage;
DWORD vboUsage = object->resource.usage;
if(object->Flags & VBFLAG_VBOCREATEFAIL) {
WARN("Creating a vbo failed once, not trying again\n");
return;
}
TRACE("Creating an OpenGL vertex buffer object for IWineD3DVertexBuffer %p\n", object);
ENTER_GL();
@ -694,6 +699,7 @@ static void CreateVBO(IWineD3DVertexBufferImpl *object) {
FIXME("Failed to create a vertex buffer object. Continuing, but performance issues can occur\n");
if(object->vbo) GL_EXTCALL(glDeleteBuffersARB(1, &object->vbo));
object->vbo = 0;
object->Flags |= VBFLAG_VBOCREATEFAIL;
LEAVE_GL();
return;
}

View File

@ -654,6 +654,7 @@ extern const IWineD3DVertexBufferVtbl IWineD3DVertexBuffer_Vtbl;
#define VBFLAG_DIRTY 0x04 /* Buffer data has been modified */
#define VBFLAG_STREAM 0x08 /* The vertex buffer is in a stream */
#define VBFLAG_HASDESC 0x10 /* A vertex description has been found */
#define VBFLAG_VBOCREATEFAIL 0x20 /* An attempt to create a vbo has failed */
/*****************************************************************************
* IWineD3DIndexBuffer implementation structure (extends IWineD3DResourceImpl)