lwjgl/src/java/org/lwjgl/d3d/IDirect3D9.java

260 lines
10 KiB
Java

package org.lwjgl.d3d;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import java.nio.LongBuffer;
import org.lwjgl.BufferChecks;
/**
*
* @author Mark
*
*/
public final class IDirect3D9 {
private long iDirect3D9;
/**
* Constructor for creating a Direct3D9 interface.
*
* @param iDirect3D9 A pointer to the native interface.
*/
private IDirect3D9(long iDirect3D9) {
this.iDirect3D9 = iDirect3D9;
}
/**
* HRESULT CheckDepthStencilMatch(UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
* D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat);
*
* @param adapter
* @param deviceType
* @param adapterFormat
* @param renderTargetFormat
* @param depthStencilFormat
* @return
*/
public final long checkDepthStencilMatch(int adapter, int deviceType, int adapterFormat,
int renderTargetFormat, int depthStencilFormat){
return nCheckDepthStencilMatch(iDirect3D9, adapter, deviceType, adapterFormat, renderTargetFormat, depthStencilFormat);
}
/**
*HRESULT CheckDeviceFormat(UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat,
* DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat);
*
* @param adapter
* @param deviceType
* @param adapterFormat
* @param usage
* @param resoruceType
* @param checkFormat
* @return
*/
public final long checkDeviceFormat(int adapter, int deviceType, int adapterFormat,
int usage, int resoruceType, int checkFormat){
return nCheckDeviceFormat(iDirect3D9, adapter, deviceType, adapterFormat, usage, resoruceType, checkFormat);
}
/**
*HRESULT CheckDeviceFormatConversion(UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat,
* D3DFORMAT TargetFormat);
*
* @param adapter
* @param deviceType
* @param sourceFormat
* @param targetFormat
* @return
*/
public final long checkDeviceFormatConversion(int adapter, int deviceType, int sourceFormat, int targetFormat){
return nCheckDeviceFormatConversion(iDirect3D9, adapter, deviceType, sourceFormat, targetFormat);
}
/**
* HRESULT CheckDeviceMultiSampleType(UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat,
* BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD* pQualityLevels);
*
* @param adapter
* @param deviceType
* @param surfaceFormat
* @param windowed
* @param multiSampleType
* @param qualityLevels
* @return
*/
public final long checkDeviceMultiSampleType(int adapter, int deviceType, int surfaceFormat,
boolean windowed, int multiSampleType, IntBuffer qualityLevels){
if(qualityLevels != null) {
BufferChecks.checkBuffer(qualityLevels, 1);
}
return nCheckDeviceMultiSampleType(iDirect3D9, adapter, deviceType, surfaceFormat, windowed, multiSampleType, qualityLevels);
}
/**
* HRESULT CheckDeviceType(UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT DisplayFormat,
* D3DFORMAT BackBufferFormat, BOOL Windowed);
*
* @param adapter
* @param deviceType
* @param displayFormat
* @param backBufferFormat
* @param windowed
* @return
*/
public final long checkDeviceType(int adapter, int deviceType, int displayFormat,
int backBufferFormat, boolean windowed){
return nCheckDeviceType(iDirect3D9, adapter, deviceType, displayFormat, backBufferFormat, windowed);
}
/**
* HRESULT CreateDevice(UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags,
* D3DPRESENT_PARAMETERS * pPresentationParameters,
* IDirect3DDevice9 ** ppReturnedDeviceInterface);
*
* @param adapter
* @param deviceType
* @param focusWindow
* @param behaviorFlags
* @param presentationParameters
* @param returnedDeviceInterface
* @return
*/
public final long createDevice(int adapter, int deviceType, long focusWindow, int behaviorFlags,
D3DPresentParameters presentationParameters, IDirect3DDevice9 returnedDeviceInterface){
return nCreateDevice(iDirect3D9, adapter, deviceType, focusWindow, behaviorFlags, presentationParameters.getBuffer(), returnedDeviceInterface);
}
/**
* HRESULT EnumAdapterModes(UINT Adapter, D3DFORMAT Format, UINT Mode, D3DDISPLAYMODE* pMode);
*
* @param adapter
* @param format
* @param modeIndex
* @param mode
* @return
*/
public final long enumAdapterModes(int adapter, int format, int modeIndex, D3DDisplaymode mode){
return nEnumAdapterModes(iDirect3D9, adapter, format, modeIndex, mode.getEmptyBuffer());
}
/**
* UINT GetAdapterCount();
*
* @return
*/
public final int getAdapterCount(){
return nGetAdapterCount(iDirect3D9);
}
/**
* HRESULT GetAdapterDisplayMode(UINT Adapter, D3DDISPLAYMODE * pMode);
*
* @param adapter
* @param mode
* @return
*/
public final long getAdapterDisplayMode(int adapter, D3DDisplaymode mode){
ByteBuffer buffer = mode.getEmptyBuffer();
long result = nGetAdapterDisplayMode(iDirect3D9, adapter, buffer);
mode.setBuffer(buffer);
return result;
}
/**
* HRESULT GetAdapterIdentifier(UINT Adapter, DWORD Flags, D3DADAPTER_IDENTIFIER9 * pIdentifier);
*
* @param adapter
* @param flags
* @param identifier
* @return
*/
public final long getAdapterIdentifier(int adapter, int flags, D3DAdapterIdentifier9 identifier){
ByteBuffer buffer = identifier.getEmptyBuffer();
long result = nGetAdapterIdentifier(iDirect3D9, adapter, flags, buffer);
identifier.setBuffer(buffer);
return result;
}
/**
* UINT GetAdapterModeCount(UINT Adapter, D3DFORMAT Format);
*
* @param adapter
* @param format
* @return
*/
public final int getAdapterModeCount(int adapter, int format){
return nGetAdapterModeCount(iDirect3D9, adapter, format);
}
/**
* HMONITOR GetAdapterMonitor(UINT Adapter);
*
* @param adapter
* @return
*/
public final long getAdapterMonitor(int adapter){
return nGetAdapterMonitor(iDirect3D9, adapter);
}
/**
* HRESULT GetDeviceCaps(UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9 * pCaps);
*
* @param adapter
* @param deviceType
* @param caps
* @return
*/
public final long getDeviceCaps(int adapter, int deviceType, D3DCaps9 caps){
ByteBuffer buffer = caps.getEmptyBuffer();
long result = nGetDeviceCaps(iDirect3D9, adapter, deviceType, buffer);
caps.setBuffer(buffer);
return result;
}
/**
* HRESULT RegisterSoftwareDevice(void * pInitializeFunction);
*
* @return
*/
public final long registerSoftwareDevice(){
throw new UnsupportedOperationException("Not implemented yet.");
}
/**
* Release the native resources associated with this interface.
* To get another interface, a new call to create needs to be made.
*
*/
public final void release() {
nRelease(iDirect3D9);
}
/**
* Create the Direct3D interface and store the pointer to the native interface in this class.
*
* @return A IDirect3D9 class representing the native interface.
*/
public final static IDirect3D9 create() {
long tempiDirect3D9 = nCreate();
return new IDirect3D9(tempiDirect3D9);
}
/**
* Get the pointer to the native interface.
*
* @return The pointer to the native interface.
*/
public final long getIDirect3D9() {
return iDirect3D9;
}
//native methods
private final native long nCheckDepthStencilMatch(long iDirect3D9, int adapter, int deviceType, int adapterFormat, int renderTargetFormat, int depthStencilFormat);
private final native long nCheckDeviceFormat(long iDirect3D9, int adapter, int deviceType, int adapterFormat, int usage, int resoruceType, int checkFormat);
private final native long nCheckDeviceFormatConversion(long iDirect3D9, int adapter, int deviceType, int sourceFormat, int targetFormat);
private final native long nCheckDeviceMultiSampleType(long iDirect3D9, int adapter, int deviceType, int surfaceFormat, boolean windowed, int multiSampleType, IntBuffer qualityLevels);
private final native long nCheckDeviceType(long iDirect3D9, int adapter, int deviceType, int displayFormat, int backBufferFormat, boolean windowed);
private final native long nCreateDevice(long iDirect3D9, int adapter, int deviceType, long focusWindow, int behaviorFlags, ByteBuffer presentationParameters, IDirect3DDevice9 returnedDeviceInterface);
private final native long nEnumAdapterModes(long iDirect3D9, int adapter, int format, int modeIndex, ByteBuffer mode);
private final native int nGetAdapterCount(long iDirect3D9);
private final native long nGetAdapterDisplayMode(long iDirect3D9, int adapter, ByteBuffer mode);
private final native long nGetAdapterIdentifier(long iDirect3D9, int adapter, int flags, ByteBuffer identifier);
private final native int nGetAdapterModeCount(long iDirect3D9, int adapter, int format);
private final native long nGetAdapterMonitor(long iDirect3D9, int adapter);
private final native long nGetDeviceCaps(long iDirect3D9, int adapter, int deviceType, ByteBuffer caps);
private final native long nRegisterSoftwareDevice(long iDirect3D9);
private final native void nRelease(long iDirect3D9);
private static native long nCreate();
}