2 * Copyright 2010 Christian Costa
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #include "wine/port.h"
21 #include "wine/debug.h"
22 #include "wine/unicode.h"
25 #include "d3dx9_36_private.h"
27 WINE_DEFAULT_DEBUG_CHANNEL(d3dx
);
29 static const struct ID3DXEffectVtbl ID3DXEffect_Vtbl
;
31 typedef struct ID3DXEffectImpl
{
32 ID3DXEffect ID3DXEffect_iface
;
36 static inline ID3DXEffectImpl
*impl_from_ID3DXEffect(ID3DXEffect
*iface
)
38 return CONTAINING_RECORD(iface
, ID3DXEffectImpl
, ID3DXEffect_iface
);
41 /*** IUnknown methods ***/
42 static HRESULT WINAPI
ID3DXEffectImpl_QueryInterface(ID3DXEffect
* iface
, REFIID riid
, void** object
)
44 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
46 TRACE("(%p)->(%s, %p)\n", This
, debugstr_guid(riid
), object
);
48 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
49 IsEqualGUID(riid
, &IID_ID3DXBaseEffect
) ||
50 IsEqualGUID(riid
, &IID_ID3DXEffect
))
52 This
->ID3DXEffect_iface
.lpVtbl
->AddRef(iface
);
57 ERR("Interface %s not found\n", debugstr_guid(riid
));
62 static ULONG WINAPI
ID3DXEffectImpl_AddRef(ID3DXEffect
* iface
)
64 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
66 TRACE("(%p)->(): AddRef from %u\n", This
, This
->ref
);
68 return InterlockedIncrement(&This
->ref
);
71 static ULONG WINAPI
ID3DXEffectImpl_Release(ID3DXEffect
* iface
)
73 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
74 ULONG ref
= InterlockedDecrement(&This
->ref
);
76 TRACE("(%p)->(): Release from %u\n", This
, ref
+ 1);
79 HeapFree(GetProcessHeap(), 0, This
);
84 /*** ID3DXBaseEffect methods ***/
85 static HRESULT WINAPI
ID3DXEffectImpl_GetDesc(ID3DXEffect
* iface
, D3DXEFFECT_DESC
* desc
)
87 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
89 FIXME("(%p)->(%p): stub\n", This
, desc
);
94 static HRESULT WINAPI
ID3DXEffectImpl_GetParameterDesc(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXPARAMETER_DESC
* desc
)
96 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
98 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, desc
);
103 static HRESULT WINAPI
ID3DXEffectImpl_GetTechniqueDesc(ID3DXEffect
* iface
, D3DXHANDLE technique
, D3DXTECHNIQUE_DESC
* desc
)
105 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
107 FIXME("(%p)->(%p, %p): stub\n", This
, technique
, desc
);
112 static HRESULT WINAPI
ID3DXEffectImpl_GetPassDesc(ID3DXEffect
* iface
, D3DXHANDLE pass
, D3DXPASS_DESC
* desc
)
114 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
116 FIXME("(%p)->(%p, %p): stub\n", This
, pass
, desc
);
121 static HRESULT WINAPI
ID3DXEffectImpl_GetFunctionDesc(ID3DXEffect
* iface
, D3DXHANDLE shader
, D3DXFUNCTION_DESC
* desc
)
123 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
125 FIXME("(%p)->(%p, %p): stub\n", This
, shader
, desc
);
130 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetParameter(ID3DXEffect
* iface
, D3DXHANDLE parameter
, UINT index
)
132 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
134 FIXME("(%p)->(%p, %u): stub\n", This
, parameter
, index
);
139 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetParameterByName(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPCSTR name
)
141 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
143 FIXME("(%p)->(%p, %s): stub\n", This
, parameter
, name
);
148 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetParameterBySemantic(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPCSTR semantic
)
150 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
152 FIXME("(%p)->(%p, %s): stub\n", This
, parameter
, semantic
);
157 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetParameterElement(ID3DXEffect
* iface
, D3DXHANDLE parameter
, UINT index
)
159 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
161 FIXME("(%p)->(%p, %u): stub\n", This
, parameter
, index
);
166 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetTechnique(ID3DXEffect
* iface
, UINT index
)
168 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
170 FIXME("(%p)->(%u): stub\n", This
, index
);
175 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetTechniqueByName(ID3DXEffect
* iface
, LPCSTR name
)
177 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
179 FIXME("(%p)->(%s): stub\n", This
, name
);
184 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetPass(ID3DXEffect
* iface
, D3DXHANDLE technique
, UINT index
)
186 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
188 FIXME("(%p)->(%p, %u): stub\n", This
, technique
, index
);
193 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetPassByName(ID3DXEffect
* iface
, D3DXHANDLE technique
, LPCSTR name
)
195 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
197 FIXME("(%p)->(%p, %s): stub\n", This
, technique
, name
);
202 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetFunction(ID3DXEffect
* iface
, UINT index
)
204 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
206 FIXME("(%p)->(%u): stub\n", This
, index
);
211 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetFunctionByName(ID3DXEffect
* iface
, LPCSTR name
)
213 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
215 FIXME("(%p)->(%s): stub\n", This
, name
);
220 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetAnnotation(ID3DXEffect
* iface
, D3DXHANDLE object
, UINT index
)
222 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
224 FIXME("(%p)->(%p, %u): stub\n", This
, object
, index
);
229 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetAnnotationByName(ID3DXEffect
* iface
, D3DXHANDLE object
, LPCSTR name
)
231 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
233 FIXME("(%p)->(%p, %s): stub\n", This
, object
, name
);
238 static HRESULT WINAPI
ID3DXEffectImpl_SetValue(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPCVOID data
, UINT bytes
)
240 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
242 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, data
, bytes
);
247 static HRESULT WINAPI
ID3DXEffectImpl_GetValue(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPVOID data
, UINT bytes
)
249 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
251 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, data
, bytes
);
256 static HRESULT WINAPI
ID3DXEffectImpl_SetBool(ID3DXEffect
* iface
, D3DXHANDLE parameter
, BOOL b
)
258 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
260 FIXME("(%p)->(%p, %u): stub\n", This
, parameter
, b
);
265 static HRESULT WINAPI
ID3DXEffectImpl_GetBool(ID3DXEffect
* iface
, D3DXHANDLE parameter
, BOOL
* b
)
267 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
269 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, b
);
274 static HRESULT WINAPI
ID3DXEffectImpl_SetBoolArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST BOOL
* b
, UINT count
)
276 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
278 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, b
, count
);
283 static HRESULT WINAPI
ID3DXEffectImpl_GetBoolArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, BOOL
* b
, UINT count
)
285 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
287 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, b
, count
);
292 static HRESULT WINAPI
ID3DXEffectImpl_SetInt(ID3DXEffect
* iface
, D3DXHANDLE parameter
, INT n
)
294 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
296 FIXME("(%p)->(%p, %d): stub\n", This
, parameter
, n
);
301 static HRESULT WINAPI
ID3DXEffectImpl_GetInt(ID3DXEffect
* iface
, D3DXHANDLE parameter
, INT
* n
)
303 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
305 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, n
);
310 static HRESULT WINAPI
ID3DXEffectImpl_SetIntArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST INT
* n
, UINT count
)
312 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
314 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, n
, count
);
319 static HRESULT WINAPI
ID3DXEffectImpl_GetIntArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, INT
* n
, UINT count
)
321 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
323 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, n
, count
);
328 static HRESULT WINAPI
ID3DXEffectImpl_SetFloat(ID3DXEffect
* iface
, D3DXHANDLE parameter
, FLOAT f
)
330 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
332 FIXME("(%p)->(%p, %f): stub\n", This
, parameter
, f
);
337 static HRESULT WINAPI
ID3DXEffectImpl_GetFloat(ID3DXEffect
* iface
, D3DXHANDLE parameter
, FLOAT
* f
)
339 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
341 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, f
);
346 static HRESULT WINAPI
ID3DXEffectImpl_SetFloatArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST FLOAT
* f
, UINT count
)
348 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
350 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, f
, count
);
355 static HRESULT WINAPI
ID3DXEffectImpl_GetFloatArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, FLOAT
* f
, UINT count
)
357 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
359 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, f
, count
);
364 static HRESULT WINAPI
ID3DXEffectImpl_SetVector(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
)
366 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
368 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, vector
);
373 static HRESULT WINAPI
ID3DXEffectImpl_GetVector(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXVECTOR4
* vector
)
375 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
377 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, vector
);
382 static HRESULT WINAPI
ID3DXEffectImpl_SetVectorArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXVECTOR4
* vector
, UINT count
)
384 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
386 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, vector
, count
);
391 static HRESULT WINAPI
ID3DXEffectImpl_GetVectorArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXVECTOR4
* vector
, UINT count
)
393 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
395 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, vector
, count
);
400 static HRESULT WINAPI
ID3DXEffectImpl_SetMatrix(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
)
402 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
404 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, matrix
);
409 static HRESULT WINAPI
ID3DXEffectImpl_GetMatrix(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXMATRIX
* matrix
)
411 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
413 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, matrix
);
418 static HRESULT WINAPI
ID3DXEffectImpl_SetMatrixArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
)
420 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
422 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
427 static HRESULT WINAPI
ID3DXEffectImpl_GetMatrixArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
)
429 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
431 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
436 static HRESULT WINAPI
ID3DXEffectImpl_SetMatrixPointerArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
)
438 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
440 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
445 static HRESULT WINAPI
ID3DXEffectImpl_GetMatrixPointerArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
)
447 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
449 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
454 static HRESULT WINAPI
ID3DXEffectImpl_SetMatrixTranspose(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
)
456 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
458 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, matrix
);
463 static HRESULT WINAPI
ID3DXEffectImpl_GetMatrixTranspose(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXMATRIX
* matrix
)
465 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
467 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, matrix
);
472 static HRESULT WINAPI
ID3DXEffectImpl_SetMatrixTransposeArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXMATRIX
* matrix
, UINT count
)
474 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
476 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
481 static HRESULT WINAPI
ID3DXEffectImpl_GetMatrixTransposeArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXMATRIX
* matrix
, UINT count
)
483 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
485 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
490 static HRESULT WINAPI
ID3DXEffectImpl_SetMatrixTransposePointerArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, CONST D3DXMATRIX
** matrix
, UINT count
)
492 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
494 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
499 static HRESULT WINAPI
ID3DXEffectImpl_GetMatrixTransposePointerArray(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXMATRIX
** matrix
, UINT count
)
501 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
503 FIXME("(%p)->(%p, %p, %u): stub\n", This
, parameter
, matrix
, count
);
508 static HRESULT WINAPI
ID3DXEffectImpl_SetString(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPCSTR string
)
510 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
512 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, string
);
517 static HRESULT WINAPI
ID3DXEffectImpl_GetString(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPCSTR
* string
)
519 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
521 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, string
);
526 static HRESULT WINAPI
ID3DXEffectImpl_SetTexture(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9 texture
)
528 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
530 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, texture
);
535 static HRESULT WINAPI
ID3DXEffectImpl_GetTexture(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPDIRECT3DBASETEXTURE9
* texture
)
537 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
539 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, texture
);
544 static HRESULT WINAPI
ID3DXEffectImpl_GetPixelShader(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPDIRECT3DPIXELSHADER9
* pshader
)
546 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
548 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, pshader
);
553 static HRESULT WINAPI
ID3DXEffectImpl_GetVertexShader(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPDIRECT3DVERTEXSHADER9
* vshader
)
555 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
557 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, vshader
);
562 static HRESULT WINAPI
ID3DXEffectImpl_SetArrayRange(ID3DXEffect
* iface
, D3DXHANDLE parameter
, UINT start
, UINT end
)
564 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
566 FIXME("(%p)->(%p, %u, %u): stub\n", This
, parameter
, start
, end
);
571 /*** ID3DXEffect methods ***/
572 static HRESULT WINAPI
ID3DXEffectImpl_GetPool(ID3DXEffect
* iface
, LPD3DXEFFECTPOOL
* pool
)
574 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
576 FIXME("(%p)->(%p): stub\n", This
, pool
);
581 static HRESULT WINAPI
ID3DXEffectImpl_SetTechnique(ID3DXEffect
* iface
, D3DXHANDLE technique
)
583 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
585 FIXME("(%p)->(%p): stub\n", This
, technique
);
590 static D3DXHANDLE WINAPI
ID3DXEffectImpl_GetCurrentTechnique(ID3DXEffect
* iface
)
592 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
594 FIXME("(%p)->(): stub\n", This
);
599 static HRESULT WINAPI
ID3DXEffectImpl_ValidateTechnique(ID3DXEffect
* iface
, D3DXHANDLE technique
)
601 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
603 FIXME("(%p)->(%p): stub\n", This
, technique
);
608 static HRESULT WINAPI
ID3DXEffectImpl_FindNextValidTechnique(ID3DXEffect
* iface
, D3DXHANDLE technique
, D3DXHANDLE
* next_technique
)
610 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
612 FIXME("(%p)->(%p, %p): stub\n", This
, technique
, next_technique
);
617 static BOOL WINAPI
ID3DXEffectImpl_IsParameterUsed(ID3DXEffect
* iface
, D3DXHANDLE parameter
, D3DXHANDLE technique
)
619 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
621 FIXME("(%p)->(%p, %p): stub\n", This
, parameter
, technique
);
626 static HRESULT WINAPI
ID3DXEffectImpl_Begin(ID3DXEffect
* iface
, UINT
*passes
, DWORD flags
)
628 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
630 FIXME("(%p)->(%p, %#x): stub\n", This
, passes
, flags
);
635 static HRESULT WINAPI
ID3DXEffectImpl_BeginPass(ID3DXEffect
* iface
, UINT pass
)
637 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
639 FIXME("(%p)->(%u): stub\n", This
, pass
);
644 static HRESULT WINAPI
ID3DXEffectImpl_CommitChanges(ID3DXEffect
* iface
)
646 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
648 FIXME("(%p)->(): stub\n", This
);
653 static HRESULT WINAPI
ID3DXEffectImpl_EndPass(ID3DXEffect
* iface
)
655 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
657 FIXME("(%p)->(): stub\n", This
);
662 static HRESULT WINAPI
ID3DXEffectImpl_End(ID3DXEffect
* iface
)
664 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
666 FIXME("(%p)->(): stub\n", This
);
671 static HRESULT WINAPI
ID3DXEffectImpl_GetDevice(ID3DXEffect
* iface
, LPDIRECT3DDEVICE9
* device
)
673 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
675 FIXME("(%p)->(%p): stub\n", This
, device
);
680 static HRESULT WINAPI
ID3DXEffectImpl_OnLostDevice(ID3DXEffect
* iface
)
682 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
684 FIXME("(%p)->(): stub\n", This
);
689 static HRESULT WINAPI
ID3DXEffectImpl_OnResetDevice(ID3DXEffect
* iface
)
691 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
693 FIXME("(%p)->(): stub\n", This
);
698 static HRESULT WINAPI
ID3DXEffectImpl_SetStateManager(ID3DXEffect
* iface
, LPD3DXEFFECTSTATEMANAGER manager
)
700 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
702 FIXME("(%p)->(%p): stub\n", This
, manager
);
707 static HRESULT WINAPI
ID3DXEffectImpl_GetStateManager(ID3DXEffect
* iface
, LPD3DXEFFECTSTATEMANAGER
* manager
)
709 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
711 FIXME("(%p)->(%p): stub\n", This
, manager
);
716 static HRESULT WINAPI
ID3DXEffectImpl_BeginParameterBlock(ID3DXEffect
* iface
)
718 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
720 FIXME("(%p)->(): stub\n", This
);
725 static D3DXHANDLE WINAPI
ID3DXEffectImpl_EndParameterBlock(ID3DXEffect
* iface
)
727 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
729 FIXME("(%p)->(): stub\n", This
);
734 static HRESULT WINAPI
ID3DXEffectImpl_ApplyParameterBlock(ID3DXEffect
* iface
, D3DXHANDLE parameter_block
)
736 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
738 FIXME("(%p)->(%p): stub\n", This
, parameter_block
);
743 static HRESULT WINAPI
ID3DXEffectImpl_DeleteParameterBlock(ID3DXEffect
* iface
, D3DXHANDLE parameter_block
)
745 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
747 FIXME("(%p)->(%p): stub\n", This
, parameter_block
);
752 static HRESULT WINAPI
ID3DXEffectImpl_CloneEffect(ID3DXEffect
* iface
, LPDIRECT3DDEVICE9 device
, LPD3DXEFFECT
* effect
)
754 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
756 FIXME("(%p)->(%p, %p): stub\n", This
, device
, effect
);
761 static HRESULT WINAPI
ID3DXEffectImpl_SetRawValue(ID3DXEffect
* iface
, D3DXHANDLE parameter
, LPCVOID data
, UINT byte_offset
, UINT bytes
)
763 ID3DXEffectImpl
*This
= impl_from_ID3DXEffect(iface
);
765 FIXME("(%p)->(%p, %p, %u, %u): stub\n", This
, parameter
, data
, byte_offset
, bytes
);
770 static const struct ID3DXEffectVtbl ID3DXEffect_Vtbl
=
772 /*** IUnknown methods ***/
773 ID3DXEffectImpl_QueryInterface
,
774 ID3DXEffectImpl_AddRef
,
775 ID3DXEffectImpl_Release
,
776 /*** ID3DXBaseEffect methods ***/
777 ID3DXEffectImpl_GetDesc
,
778 ID3DXEffectImpl_GetParameterDesc
,
779 ID3DXEffectImpl_GetTechniqueDesc
,
780 ID3DXEffectImpl_GetPassDesc
,
781 ID3DXEffectImpl_GetFunctionDesc
,
782 ID3DXEffectImpl_GetParameter
,
783 ID3DXEffectImpl_GetParameterByName
,
784 ID3DXEffectImpl_GetParameterBySemantic
,
785 ID3DXEffectImpl_GetParameterElement
,
786 ID3DXEffectImpl_GetTechnique
,
787 ID3DXEffectImpl_GetTechniqueByName
,
788 ID3DXEffectImpl_GetPass
,
789 ID3DXEffectImpl_GetPassByName
,
790 ID3DXEffectImpl_GetFunction
,
791 ID3DXEffectImpl_GetFunctionByName
,
792 ID3DXEffectImpl_GetAnnotation
,
793 ID3DXEffectImpl_GetAnnotationByName
,
794 ID3DXEffectImpl_SetValue
,
795 ID3DXEffectImpl_GetValue
,
796 ID3DXEffectImpl_SetBool
,
797 ID3DXEffectImpl_GetBool
,
798 ID3DXEffectImpl_SetBoolArray
,
799 ID3DXEffectImpl_GetBoolArray
,
800 ID3DXEffectImpl_SetInt
,
801 ID3DXEffectImpl_GetInt
,
802 ID3DXEffectImpl_SetIntArray
,
803 ID3DXEffectImpl_GetIntArray
,
804 ID3DXEffectImpl_SetFloat
,
805 ID3DXEffectImpl_GetFloat
,
806 ID3DXEffectImpl_SetFloatArray
,
807 ID3DXEffectImpl_GetFloatArray
,
808 ID3DXEffectImpl_SetVector
,
809 ID3DXEffectImpl_GetVector
,
810 ID3DXEffectImpl_SetVectorArray
,
811 ID3DXEffectImpl_GetVectorArray
,
812 ID3DXEffectImpl_SetMatrix
,
813 ID3DXEffectImpl_GetMatrix
,
814 ID3DXEffectImpl_SetMatrixArray
,
815 ID3DXEffectImpl_GetMatrixArray
,
816 ID3DXEffectImpl_SetMatrixPointerArray
,
817 ID3DXEffectImpl_GetMatrixPointerArray
,
818 ID3DXEffectImpl_SetMatrixTranspose
,
819 ID3DXEffectImpl_GetMatrixTranspose
,
820 ID3DXEffectImpl_SetMatrixTransposeArray
,
821 ID3DXEffectImpl_GetMatrixTransposeArray
,
822 ID3DXEffectImpl_SetMatrixTransposePointerArray
,
823 ID3DXEffectImpl_GetMatrixTransposePointerArray
,
824 ID3DXEffectImpl_SetString
,
825 ID3DXEffectImpl_GetString
,
826 ID3DXEffectImpl_SetTexture
,
827 ID3DXEffectImpl_GetTexture
,
828 ID3DXEffectImpl_GetPixelShader
,
829 ID3DXEffectImpl_GetVertexShader
,
830 ID3DXEffectImpl_SetArrayRange
,
831 /*** ID3DXEffect methods ***/
832 ID3DXEffectImpl_GetPool
,
833 ID3DXEffectImpl_SetTechnique
,
834 ID3DXEffectImpl_GetCurrentTechnique
,
835 ID3DXEffectImpl_ValidateTechnique
,
836 ID3DXEffectImpl_FindNextValidTechnique
,
837 ID3DXEffectImpl_IsParameterUsed
,
838 ID3DXEffectImpl_Begin
,
839 ID3DXEffectImpl_BeginPass
,
840 ID3DXEffectImpl_CommitChanges
,
841 ID3DXEffectImpl_EndPass
,
843 ID3DXEffectImpl_GetDevice
,
844 ID3DXEffectImpl_OnLostDevice
,
845 ID3DXEffectImpl_OnResetDevice
,
846 ID3DXEffectImpl_SetStateManager
,
847 ID3DXEffectImpl_GetStateManager
,
848 ID3DXEffectImpl_BeginParameterBlock
,
849 ID3DXEffectImpl_EndParameterBlock
,
850 ID3DXEffectImpl_ApplyParameterBlock
,
851 ID3DXEffectImpl_DeleteParameterBlock
,
852 ID3DXEffectImpl_CloneEffect
,
853 ID3DXEffectImpl_SetRawValue
856 HRESULT WINAPI
D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device
,
859 CONST D3DXMACRO
* defines
,
860 LPD3DXINCLUDE include
,
861 LPCSTR skip_constants
,
863 LPD3DXEFFECTPOOL pool
,
864 LPD3DXEFFECT
* effect
,
865 LPD3DXBUFFER
* compilation_errors
)
867 ID3DXEffectImpl
* object
;
869 FIXME("(%p, %p, %u, %p, %p, %p, %#x, %p, %p, %p): semi-stub\n", device
, srcdata
, srcdatalen
, defines
, include
,
870 skip_constants
, flags
, pool
, effect
, compilation_errors
);
872 if (!device
|| !srcdata
)
873 return D3DERR_INVALIDCALL
;
878 /* Native dll allows effect to be null so just return D3D_OK after doing basic checks */
882 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(ID3DXEffectImpl
));
885 ERR("Out of memory\n");
886 return E_OUTOFMEMORY
;
889 object
->ID3DXEffect_iface
.lpVtbl
= &ID3DXEffect_Vtbl
;
892 *effect
= &object
->ID3DXEffect_iface
;
897 HRESULT WINAPI
D3DXCreateEffect(LPDIRECT3DDEVICE9 device
,
900 CONST D3DXMACRO
* defines
,
901 LPD3DXINCLUDE include
,
903 LPD3DXEFFECTPOOL pool
,
904 LPD3DXEFFECT
* effect
,
905 LPD3DXBUFFER
* compilation_errors
)
907 TRACE("(%p, %p, %u, %p, %p, %#x, %p, %p, %p): Forwarded to D3DXCreateEffectEx\n", device
, srcdata
, srcdatalen
, defines
,
908 include
, flags
, pool
, effect
, compilation_errors
);
910 return D3DXCreateEffectEx(device
, srcdata
, srcdatalen
, defines
, include
, NULL
, flags
, pool
, effect
, compilation_errors
);
913 HRESULT WINAPI
D3DXCreateEffectCompiler(LPCSTR srcdata
,
915 CONST D3DXMACRO
* defines
,
916 LPD3DXINCLUDE include
,
918 LPD3DXEFFECTCOMPILER
* compiler
,
919 LPD3DXBUFFER
* parse_errors
)
921 FIXME("(%p, %u, %p, %p, %#x, %p, %p): stub\n", srcdata
, srcdatalen
, defines
, include
, flags
, compiler
, parse_errors
);
926 static const struct ID3DXEffectPoolVtbl ID3DXEffectPool_Vtbl
;
928 typedef struct ID3DXEffectPoolImpl
{
929 const ID3DXEffectPoolVtbl
*lpVtbl
;
931 } ID3DXEffectPoolImpl
;
933 /*** IUnknown methods ***/
934 static HRESULT WINAPI
ID3DXEffectPoolImpl_QueryInterface(ID3DXEffectPool
* iface
, REFIID riid
, void** object
)
936 ID3DXEffectPoolImpl
*This
= (ID3DXEffectPoolImpl
*)iface
;
938 TRACE("(%p)->(%s, %p)\n", This
, debugstr_guid(riid
), object
);
940 if (IsEqualGUID(riid
, &IID_IUnknown
) ||
941 IsEqualGUID(riid
, &IID_ID3DXEffectPool
))
943 This
->lpVtbl
->AddRef(iface
);
948 WARN("Interface %s not found\n", debugstr_guid(riid
));
950 return E_NOINTERFACE
;
953 static ULONG WINAPI
ID3DXEffectPoolImpl_AddRef(ID3DXEffectPool
* iface
)
955 ID3DXEffectPoolImpl
*This
= (ID3DXEffectPoolImpl
*)iface
;
957 TRACE("(%p)->(): AddRef from %u\n", This
, This
->ref
);
959 return InterlockedIncrement(&This
->ref
);
962 static ULONG WINAPI
ID3DXEffectPoolImpl_Release(ID3DXEffectPool
* iface
)
964 ID3DXEffectPoolImpl
*This
= (ID3DXEffectPoolImpl
*)iface
;
965 ULONG ref
= InterlockedDecrement(&This
->ref
);
967 TRACE("(%p)->(): Release from %u\n", This
, ref
+ 1);
970 HeapFree(GetProcessHeap(), 0, This
);
975 static const struct ID3DXEffectPoolVtbl ID3DXEffectPool_Vtbl
=
977 /*** IUnknown methods ***/
978 ID3DXEffectPoolImpl_QueryInterface
,
979 ID3DXEffectPoolImpl_AddRef
,
980 ID3DXEffectPoolImpl_Release
983 HRESULT WINAPI
D3DXCreateEffectPool(LPD3DXEFFECTPOOL
* pool
)
985 ID3DXEffectPoolImpl
* object
;
987 TRACE("(%p)\n", pool
);
990 return D3DERR_INVALIDCALL
;
992 object
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, sizeof(ID3DXEffectImpl
));
995 ERR("Out of memory\n");
996 return E_OUTOFMEMORY
;
999 object
->lpVtbl
= &ID3DXEffectPool_Vtbl
;
1002 *pool
= (LPD3DXEFFECTPOOL
)object
;
1007 HRESULT WINAPI
D3DXCreateEffectFromFileExW(LPDIRECT3DDEVICE9 device
, LPCWSTR srcfile
,
1008 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, LPCSTR skipconstants
, DWORD flags
,
1009 LPD3DXEFFECTPOOL pool
, LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1015 TRACE("(%s): relay\n", debugstr_w(srcfile
));
1017 if (!device
|| !srcfile
|| !defines
)
1018 return D3DERR_INVALIDCALL
;
1020 ret
= map_view_of_file(srcfile
, &buffer
, &size
);
1023 return D3DXERR_INVALIDDATA
;
1025 ret
= D3DXCreateEffectEx(device
, buffer
, size
, defines
, include
, skipconstants
, flags
, pool
, effect
, compilationerrors
);
1026 UnmapViewOfFile(buffer
);
1031 HRESULT WINAPI
D3DXCreateEffectFromFileExA(LPDIRECT3DDEVICE9 device
, LPCSTR srcfile
,
1032 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, LPCSTR skipconstants
, DWORD flags
,
1033 LPD3DXEFFECTPOOL pool
, LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1039 TRACE("(void): relay\n");
1041 if (!srcfile
|| !defines
)
1042 return D3DERR_INVALIDCALL
;
1044 len
= MultiByteToWideChar(CP_ACP
, 0, srcfile
, -1, NULL
, 0);
1045 srcfileW
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
* sizeof(WCHAR
));
1046 MultiByteToWideChar(CP_ACP
, 0, srcfile
, -1, srcfileW
, len
);
1048 ret
= D3DXCreateEffectFromFileExW(device
, srcfileW
, defines
, include
, skipconstants
, flags
, pool
, effect
, compilationerrors
);
1049 HeapFree(GetProcessHeap(), 0, srcfileW
);
1054 HRESULT WINAPI
D3DXCreateEffectFromFileW(LPDIRECT3DDEVICE9 device
, LPCWSTR srcfile
,
1055 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, DWORD flags
, LPD3DXEFFECTPOOL pool
,
1056 LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1058 TRACE("(void): relay\n");
1059 return D3DXCreateEffectFromFileExW(device
, srcfile
, defines
, include
, NULL
, flags
, pool
, effect
, compilationerrors
);
1062 HRESULT WINAPI
D3DXCreateEffectFromFileA(LPDIRECT3DDEVICE9 device
, LPCSTR srcfile
,
1063 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, DWORD flags
, LPD3DXEFFECTPOOL pool
,
1064 LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1066 TRACE("(void): relay\n");
1067 return D3DXCreateEffectFromFileExA(device
, srcfile
, defines
, include
, NULL
, flags
, pool
, effect
, compilationerrors
);
1070 HRESULT WINAPI
D3DXCreateEffectFromResourceExW(LPDIRECT3DDEVICE9 device
, HMODULE srcmodule
, LPCWSTR srcresource
,
1071 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, LPCSTR skipconstants
, DWORD flags
,
1072 LPD3DXEFFECTPOOL pool
, LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1076 TRACE("(%p, %s): relay\n", srcmodule
, debugstr_w(srcresource
));
1078 if (!device
|| !defines
)
1079 return D3DERR_INVALIDCALL
;
1081 resinfo
= FindResourceW(srcmodule
, srcresource
, (LPCWSTR
) RT_RCDATA
);
1089 ret
= load_resource_into_memory(srcmodule
, resinfo
, &buffer
, &size
);
1092 return D3DXERR_INVALIDDATA
;
1094 return D3DXCreateEffectEx(device
, buffer
, size
, defines
, include
, skipconstants
, flags
, pool
, effect
, compilationerrors
);
1097 return D3DXERR_INVALIDDATA
;
1100 HRESULT WINAPI
D3DXCreateEffectFromResourceExA(LPDIRECT3DDEVICE9 device
, HMODULE srcmodule
, LPCSTR srcresource
,
1101 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, LPCSTR skipconstants
, DWORD flags
,
1102 LPD3DXEFFECTPOOL pool
, LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1106 TRACE("(%p, %s): relay\n", srcmodule
, debugstr_a(srcresource
));
1108 if (!device
|| !defines
)
1109 return D3DERR_INVALIDCALL
;
1111 resinfo
= FindResourceA(srcmodule
, srcresource
, (LPCSTR
) RT_RCDATA
);
1119 ret
= load_resource_into_memory(srcmodule
, resinfo
, &buffer
, &size
);
1122 return D3DXERR_INVALIDDATA
;
1124 return D3DXCreateEffectEx(device
, buffer
, size
, defines
, include
, skipconstants
, flags
, pool
, effect
, compilationerrors
);
1127 return D3DXERR_INVALIDDATA
;
1130 HRESULT WINAPI
D3DXCreateEffectFromResourceW(LPDIRECT3DDEVICE9 device
, HMODULE srcmodule
, LPCWSTR srcresource
,
1131 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, DWORD flags
, LPD3DXEFFECTPOOL pool
,
1132 LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1134 TRACE("(void): relay\n");
1135 return D3DXCreateEffectFromResourceExW(device
, srcmodule
, srcresource
, defines
, include
, NULL
, flags
, pool
, effect
, compilationerrors
);
1138 HRESULT WINAPI
D3DXCreateEffectFromResourceA(LPDIRECT3DDEVICE9 device
, HMODULE srcmodule
, LPCSTR srcresource
,
1139 const D3DXMACRO
*defines
, LPD3DXINCLUDE include
, DWORD flags
, LPD3DXEFFECTPOOL pool
,
1140 LPD3DXEFFECT
*effect
, LPD3DXBUFFER
*compilationerrors
)
1142 TRACE("(void): relay\n");
1143 return D3DXCreateEffectFromResourceExA(device
, srcmodule
, srcresource
, defines
, include
, NULL
, flags
, pool
, effect
, compilationerrors
);
1146 HRESULT WINAPI
D3DXCreateEffectCompilerFromFileW(LPCWSTR srcfile
, const D3DXMACRO
*defines
, LPD3DXINCLUDE include
,
1147 DWORD flags
, LPD3DXEFFECTCOMPILER
*effectcompiler
, LPD3DXBUFFER
*parseerrors
)
1153 TRACE("(%s): relay\n", debugstr_w(srcfile
));
1155 if (!srcfile
|| !defines
)
1156 return D3DERR_INVALIDCALL
;
1158 ret
= map_view_of_file(srcfile
, &buffer
, &size
);
1161 return D3DXERR_INVALIDDATA
;
1163 ret
= D3DXCreateEffectCompiler(buffer
, size
, defines
, include
, flags
, effectcompiler
, parseerrors
);
1164 UnmapViewOfFile(buffer
);
1169 HRESULT WINAPI
D3DXCreateEffectCompilerFromFileA(LPCSTR srcfile
, const D3DXMACRO
*defines
, LPD3DXINCLUDE include
,
1170 DWORD flags
, LPD3DXEFFECTCOMPILER
*effectcompiler
, LPD3DXBUFFER
*parseerrors
)
1176 TRACE("(void): relay\n");
1178 if (!srcfile
|| !defines
)
1179 return D3DERR_INVALIDCALL
;
1181 len
= MultiByteToWideChar(CP_ACP
, 0, srcfile
, -1, NULL
, 0);
1182 srcfileW
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
* sizeof(WCHAR
));
1183 MultiByteToWideChar(CP_ACP
, 0, srcfile
, -1, srcfileW
, len
);
1185 ret
= D3DXCreateEffectCompilerFromFileW(srcfileW
, defines
, include
, flags
, effectcompiler
, parseerrors
);
1186 HeapFree(GetProcessHeap(), 0, srcfileW
);
1191 HRESULT WINAPI
D3DXCreateEffectCompilerFromResourceA(HMODULE srcmodule
, LPCSTR srcresource
, const D3DXMACRO
*defines
,
1192 LPD3DXINCLUDE include
, DWORD flags
, LPD3DXEFFECTCOMPILER
*effectcompiler
, LPD3DXBUFFER
*parseerrors
)
1196 TRACE("(%p, %s): relay\n", srcmodule
, debugstr_a(srcresource
));
1198 resinfo
= FindResourceA(srcmodule
, srcresource
, (LPCSTR
) RT_RCDATA
);
1206 ret
= load_resource_into_memory(srcmodule
, resinfo
, &buffer
, &size
);
1209 return D3DXERR_INVALIDDATA
;
1211 return D3DXCreateEffectCompiler(buffer
, size
, defines
, include
, flags
, effectcompiler
, parseerrors
);
1214 return D3DXERR_INVALIDDATA
;
1217 HRESULT WINAPI
D3DXCreateEffectCompilerFromResourceW(HMODULE srcmodule
, LPCWSTR srcresource
, const D3DXMACRO
*defines
,
1218 LPD3DXINCLUDE include
, DWORD flags
, LPD3DXEFFECTCOMPILER
*effectcompiler
, LPD3DXBUFFER
*parseerrors
)
1222 TRACE("(%p, %s): relay\n", srcmodule
, debugstr_w(srcresource
));
1224 resinfo
= FindResourceW(srcmodule
, srcresource
, (LPCWSTR
) RT_RCDATA
);
1232 ret
= load_resource_into_memory(srcmodule
, resinfo
, &buffer
, &size
);
1235 return D3DXERR_INVALIDDATA
;
1237 return D3DXCreateEffectCompiler(buffer
, size
, defines
, include
, flags
, effectcompiler
, parseerrors
);
1240 return D3DXERR_INVALIDDATA
;