diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 878e5bf8969..e569e6eb3ac 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1362,7 +1362,11 @@ struct wined3d_context *CreateContext(IWineD3DDeviceImpl *This, IWineD3DSurfaceI checkGLcall("glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE)"); } - if (GL_SUPPORT(EXT_PROVOKING_VERTEX)) + if (GL_SUPPORT(ARB_PROVOKING_VERTEX)) + { + GL_EXTCALL(glProvokingVertex(GL_FIRST_VERTEX_CONVENTION)); + } + else if (GL_SUPPORT(EXT_PROVOKING_VERTEX)) { GL_EXTCALL(glProvokingVertexEXT(GL_FIRST_VERTEX_CONVENTION_EXT)); } diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 2f4cdae9e5f..7b46c0f460c 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -72,6 +72,7 @@ static const struct { {"GL_ARB_pixel_buffer_object", ARB_PIXEL_BUFFER_OBJECT, 0 }, {"GL_ARB_point_parameters", ARB_POINT_PARAMETERS, 0 }, {"GL_ARB_point_sprite", ARB_POINT_SPRITE, 0 }, + {"GL_ARB_provoking_vertex", ARB_PROVOKING_VERTEX, 0 }, {"GL_ARB_texture_border_clamp", ARB_TEXTURE_BORDER_CLAMP, 0 }, {"GL_ARB_texture_compression", ARB_TEXTURE_COMPRESSION, 0 }, {"GL_ARB_texture_cube_map", ARB_TEXTURE_CUBE_MAP, 0 }, diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index 1c9ce6c1e13..1030931da16 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -1884,6 +1884,17 @@ typedef void (WINE_GLAPI *WINED3D_PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, #endif typedef void (WINE_GLAPI * PGLFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); typedef void (WINE_GLAPI * PGLFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); + +/* GL_ARB_provoking_vertex */ +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#define GL_FIRST_VERTEX_CONVENTION 0x8e4d +#define GL_LAST_VERTEX_CONVENTION 0x8e4e +#define GL_PROVOKING_VERTEX 0x8e4f +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8e4c +#endif +typedef void (WINE_GLAPI * PGLFNGLPROVOKINGVERTEXPROC)(GLenum mode); + /* GL_ARB_vertex_blend */ #ifndef GL_ARB_vertex_blend #define GL_ARB_vertex_blend 1 @@ -3549,6 +3560,7 @@ typedef enum _GL_SupportedExt { ARB_MULTITEXTURE, ARB_OCCLUSION_QUERY, ARB_POINT_PARAMETERS, + ARB_PROVOKING_VERTEX, ARB_PIXEL_BUFFER_OBJECT, ARB_POINT_SPRITE, ARB_TEXTURE_COMPRESSION, @@ -3714,6 +3726,8 @@ typedef enum _GL_SupportedExt { /* GL_ARB_point_parameters */ \ USE_GL_FUNC(PGLFNGLPOINTPARAMETERFARBPROC, glPointParameterfARB, ARB_POINT_PARAMETERS, NULL )\ USE_GL_FUNC(PGLFNGLPOINTPARAMETERFVARBPROC, glPointParameterfvARB, ARB_POINT_PARAMETERS, NULL )\ + /* GL_ARB_provoking_vertex */ \ + USE_GL_FUNC(PGLFNGLPROVOKINGVERTEXPROC, glProvokingVertex, ARB_PROVOKING_VERTEX, NULL)\ /* GL_ARB_texture_compression */ \ USE_GL_FUNC(PGLFNCOMPRESSEDTEXIMAGE2DPROC, glCompressedTexImage2DARB, ARB_TEXTURE_COMPRESSION,NULL )\ USE_GL_FUNC(PGLFNCOMPRESSEDTEXIMAGE3DPROC, glCompressedTexImage3DARB, ARB_TEXTURE_COMPRESSION,NULL )\