/** * Retrieves extension entry points. * * <p>The application is expected to verify the applicability of an extension or core function entry point before requesting it by name, by use of * {@link #alcIsExtensionPresent IsExtensionPresent}.</p> * * <p>Entry points can be device specific, but are not context specific. Using a {@code NULL} device handle does not guarantee that the entry point is returned, * even if available for one of the available devices.</p> * * @param deviceHandle the device to query * @param funcName the function name */ @NativeType("void *") public static long alcGetProcAddress(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALchar const *") ByteBuffer funcName) { if (CHECKS) { checkNT1(funcName); } return nalcGetProcAddress(deviceHandle, memAddress(funcName)); }
/** * Retrieves extension entry points. * * <p>The application is expected to verify the applicability of an extension or core function entry point before requesting it by name, by use of * {@link #alcIsExtensionPresent IsExtensionPresent}.</p> * * <p>Entry points can be device specific, but are not context specific. Using a {@code NULL} device handle does not guarantee that the entry point is returned, * even if available for one of the available devices.</p> * * @param deviceHandle the device to query * @param funcName the function name */ @NativeType("void *") public static long alcGetProcAddress(@NativeType("ALCdevice const *") long deviceHandle, @NativeType("ALchar const *") CharSequence funcName) { MemoryStack stack = stackGet(); int stackPointer = stack.getPointer(); try { stack.nASCII(funcName, true); long funcNameEncoded = stack.getPointerAddress(); return nalcGetProcAddress(deviceHandle, funcNameEncoded); } finally { stack.setPointer(stackPointer); } }