wined3d: Also flip the point sprite coordinate origin when rendering offscreen.
This commit is contained in:
parent
67f15e7149
commit
b1abafcf8d
|
@ -1482,6 +1482,12 @@ struct wined3d_context *context_create(IWineD3DSwapChainImpl *swapchain, IWineD3
|
|||
checkGLcall("glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE)");
|
||||
}
|
||||
|
||||
if (gl_info->supported[WINED3D_GL_VERSION_2_0])
|
||||
{
|
||||
glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_UPPER_LEFT);
|
||||
checkGLcall("glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, GL_UPPER_LEFT)");
|
||||
}
|
||||
|
||||
if (gl_info->supported[ARB_PROVOKING_VERTEX])
|
||||
{
|
||||
GL_EXTCALL(glProvokingVertex(GL_FIRST_VERTEX_CONVENTION));
|
||||
|
@ -1939,6 +1945,12 @@ static inline void context_set_render_offscreen(struct wined3d_context *context,
|
|||
{
|
||||
if (context->render_offscreen == offscreen) return;
|
||||
|
||||
if (context->gl_info->supported[WINED3D_GL_VERSION_2_0])
|
||||
{
|
||||
glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, offscreen ? GL_LOWER_LEFT : GL_UPPER_LEFT);
|
||||
checkGLcall("glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN, ...)");
|
||||
}
|
||||
|
||||
Context_MarkStateDirty(context, STATE_TRANSFORM(WINED3DTS_PROJECTION), StateTable);
|
||||
Context_MarkStateDirty(context, STATE_VDECL, StateTable);
|
||||
Context_MarkStateDirty(context, STATE_VIEWPORT, StateTable);
|
||||
|
|
|
@ -2287,6 +2287,8 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_adapter *adapter)
|
|||
}
|
||||
}
|
||||
|
||||
if (gl_version >= MAKEDWORD_VERSION(2, 0)) gl_info->supported[WINED3D_GL_VERSION_2_0] = TRUE;
|
||||
|
||||
if (gl_info->supported[APPLE_FENCE])
|
||||
{
|
||||
/* GL_NV_fence and GL_APPLE_fence provide the same functionality basically.
|
||||
|
|
|
@ -644,6 +644,13 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT StartIdx, UINT
|
|||
}
|
||||
}
|
||||
|
||||
if (!context->gl_info->supported[WINED3D_GL_VERSION_2_0] && context->render_offscreen
|
||||
&& This->stateBlock->renderState[WINED3DRS_POINTSPRITEENABLE]
|
||||
&& This->stateBlock->gl_primitive_type == GL_POINTS)
|
||||
{
|
||||
FIXME("Point sprite coordinate origin switching not supported.\n");
|
||||
}
|
||||
|
||||
/* Ok, we will be updating the screen from here onwards so grab the lock */
|
||||
ENTER_GL();
|
||||
{
|
||||
|
|
|
@ -1353,6 +1353,7 @@ void (WINE_GLAPI *glVertex4sv)(const GLshort *v) DECLSPEC_HIDDEN;
|
|||
void (WINE_GLAPI *glVertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) DECLSPEC_HIDDEN;
|
||||
void (WINE_GLAPI *glViewport)(GLint x, GLint y, GLsizei width, GLsizei height) DECLSPEC_HIDDEN;
|
||||
void (WINE_GLAPI *glPointParameterfv)(GLenum pname, const GLfloat *params) DECLSPEC_HIDDEN;
|
||||
void (WINE_GLAPI *glPointParameteri)(GLenum name, GLint value) DECLSPEC_HIDDEN;
|
||||
|
||||
/* glFinish and glFlush are always loaded from opengl32.dll, thus they always have
|
||||
* __stdcall calling convention.
|
||||
|
@ -1708,6 +1709,7 @@ BOOL (WINAPI *pwglShareLists)(HGLRC, HGLRC) DECLSPEC_HIDDEN;
|
|||
USE_GL_FUNC(glVertexPointer) \
|
||||
USE_GL_FUNC(glViewport) \
|
||||
USE_GL_FUNC(glPointParameterfv) \
|
||||
USE_GL_FUNC(glPointParameteri) \
|
||||
|
||||
#define WGL_FUNCS_GEN \
|
||||
USE_WGL_FUNC(wglCreateContext) \
|
||||
|
@ -1835,6 +1837,7 @@ typedef enum wined3d_gl_extension
|
|||
WGL_WINE_PIXEL_FORMAT_PASSTHROUGH,
|
||||
/* Internally used */
|
||||
WINE_NORMALIZED_TEXRECT,
|
||||
WINED3D_GL_VERSION_2_0,
|
||||
|
||||
WINED3D_GL_EXT_COUNT,
|
||||
} GL_SupportedExt;
|
||||
|
|
Loading…
Reference in New Issue