es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El método stbi_load no está aceptando mis parámetros.

bi = ImageIO.read(new File(filename));
width = bi.getWidth();
height = bi.getHeight();

ByteBuffer data = stbi_load("/sprites/" + filename, width, height, 0, 0);

Por alguna razón, stbi_load no está aceptando los segundos, terceros y cuartos parámetros en el método, a pesar de ser todos enteros válidos. Da el siguiente error:

La función stbi_load(ByteBuffer, IntBuffer, IntBuffer, IntBuffer, int) en el tipo STBImage no es aplicable para los argumentos (String, int, int, int, int).

¿Alguna idea de por qué esto está sucediendo? Se agradecen todas las respuestas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el método stbi_load espera objetos de tipo IntBuffer en lugar de valores primitivos int para el segundo, tercer y cuarto parámetro. Trate de reemplazar esos parámetros por objetos IntBuffer, como se muestra a continuación:

    IntBuffer widthBuf = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder()).asIntBuffer();
    widthBuf.put(width).flip();
    IntBuffer heightBuf = ByteBuffer.allocateDirect(4).order(ByteOrder.nativeOrder()).asIntBuffer();
    heightBuf.put(height).flip();
    
    ByteBuffer data = stbi_load("/sprites/" + filename, widthBuf, heightBuf, 0, 0);
    

    Esto debería crear objetos IntBuffer para los valores de ancho y alto y pasarlos a stbi_load en lugar de los valores enteros sin procesar.

Comments are closed.