All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.lwjgl.opengl.WGLNVDelayBeforeSwap Maven / Gradle / Ivy

Go to download

The most widely adopted 2D and 3D graphics API in the industry, bringing thousands of applications to a wide variety of computer platforms.

There is a newer version: 3.3.4
Show newest version
/*
 * Copyright LWJGL. All rights reserved.
 * License terms: https://www.lwjgl.org/license
 * MACHINE GENERATED FILE, DO NOT EDIT
 */
package org.lwjgl.opengl;

import org.lwjgl.system.*;

import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;

import org.lwjgl.system.windows.WinBase;

/**
 * Native bindings to the WGL_NV_delay_before_swap extension.
 * 
 * 

For most interactive applications, the standard rendering loop responding to input events on a frame granularity is sufficient. Some more demanding * applications may want to exchange performance for the ability to sample input closer to the final frame swap and adjust rendering accordingly. This * extension adds functionality to allow the application to wait until a specified time before a swapbuffers command would be able to execute.

* *

Requires {@link GL21 OpenGL 2.1}.

*/ public class WGLNVDelayBeforeSwap { protected WGLNVDelayBeforeSwap() { throw new UnsupportedOperationException(); } static boolean isAvailable(WGLCapabilities caps) { return checkFunctions( caps.wglDelayBeforeSwapNV ); } // --- [ wglDelayBeforeSwapNV ] --- /** * Blocks the CPU until {@code seconds} seconds before a synchronized swap would occur on the window associated with {@code hDC}. It also returns a boolean * value equal to {@link WinBase#TRUE} when the implementation had to wait for the synchronized swap and {@link WinBase#FALSE} otherwise. * *

The parameter {@code hDC} must be a valid device context associated with a graphic adapter. If {@code hDC} is not valid, {@link WinBase#GetLastError} will * return WGL_INVALID_HDC, {@code DelayBeforeSwapNV} will return FALSE and will not wait for the swap. If {@code hDC} is not associated with a graphic * adapter, {@code GetLastError} will return ERROR_DC_NOT_FOUND, {@code DelayBeforeSwapNV} will return FALSE and will not wait for the swap.

* *

The parameter {@code seconds} accepts positive floating point values not larger than the length in seconds of the swap period on the associated window. * When buffer swaps are synchronized, the swap period is composed of one or multiple video frame periods. A video frame period is the time required by the * monitor to display a full frame of video data. A swap interval set to a value of 2 means that the color buffers will be swapped at most every other * video frame. If {@code seconds} is smaller than 0, {@code GetLastError} will return ERROR_INVALID_DATA, {@code DelayBeforeSwapNV} will return FALSE and * will not wait for the end of the swap period. If {@code seconds} is greater than a swap period, {@code DelayBeforeSwapNV} will return immediately * without generating any error and the return value will be FALSE.

* *

The application should use a {@code seconds} delay large enough to have time to complete its work before the end of the swap period. If {@code seconds} * is close to 0.0, the application may miss the end of the swap period and it will have to wait an additional swap period before it can swap.

* *

If {@code DelayBeforeSwapNV} detects that there is less than {@code seconds} seconds before the end of the swap period, it will return immediately and * the return value will be FALSE. The implementation will not wait an additional video frame period to have an exact delay of {@code seconds} seconds.

* *

If buffer swaps are unsynchronized, {@code DelayBeforeSwapNV} will return immediately and the return value will be FALSE. It could happen for multiple * reasons, for example if the swap interval is equal to 0, if the window is in a mode switch or if no monitors are active.

* * @param hDC a handle to the DC * @param seconds the delay, in seconds */ @NativeType("BOOL") public static boolean wglDelayBeforeSwapNV(@NativeType("HDC") long hDC, @NativeType("GLfloat") float seconds) { long __functionAddress = GL.getCapabilitiesWGL().wglDelayBeforeSwapNV; if (CHECKS) { check(__functionAddress); check(hDC); } return callPI(__functionAddress, hDC, seconds) != 0; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy