문제

코드를 Java에서 C로 옮기려고 노력하고 있으며 C에서 int 배열을 가져 와서 OpenGL에 대해 비트 맵을 만들 수있는 C에서 함수를 찾으려고 시도하면서 문제가 발생했습니다. Java에서는 사용했습니다

bitmap = Bitmap.createBitmap( {int array name} , w, h, Config.RGB_565);

C에서 사용할 수있는 비슷한 기능이나 사용할 수있는 해결 방법이 있습니까?

또한 중요하다면 Android를위한 프로그래밍입니다.

감사!

도움이 되었습니까?

해결책

나는 Android에 대해 구체적으로 익숙하지 않지만 OpenGL C 바인딩으로 제대로 기억하면 비트 맵 구조가 없습니다. 대신 다양한 비트 맵 함수 (즉 glBindTexture()) Gluint Pointers를 가져 가십시오 (배열과 동일).

Java에서는 모든 것이 클래스이므로 비트 맵에는 클래스와 관련된 클래스가 있지만 비트 맵 클래스는 대부분 이미지를 포함하는 int 배열의 래퍼 (및 일부 기능) 일뿐입니다.

구체적으로 OpenGL에서 우리는 종종 배열을 glbindtexture 기능, 그리고 다른 텍스처 함수는 OpenGL의 올바른 '상태'를 참조하도록 바인딩 된 이름을 취합니다.

반면 에이 회로를 단락 시키려고한다면이 프로세스는 언제든지 사용할 수 있습니다. glteximage2d

다른 팁

나는 얼마 전에 BMP 형식의 문서를 작성하여 작곡했습니다. 이 파이썬 구현. 문제가 거의없이 이것을 C로 포트 할 수 있어야합니다.

당신이 찾고있는 기능은 간단합니다 gltextimage2d (). 배열에서 OpenGL로 데이터를 업로드합니다. 당신은 당신이 가지고 있고 원하는 소스 및 대상 형식을 지정하고 나머지는 수행합니다.

함께 사용하십시오 glbindtexture () 저장된 재사용 가능한 텍스처 객체를 만들려면 모든 프레임을 사용하기 전에 텍스처 데이터를 업로드 할 필요가 없습니다.

필요한 것은 다음과 같습니다.

glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA , x_size, y_size, 0, GL_RGBA , GL_UNSIGNED_BYTE, (GLvoid *)your_data );

x_size 및 y_size는 2의 전력이어야합니다.이 코드의 경우 x_size 배열이 필요합니다.y_size 4-byte ints (또는 x_sizey_size*4 바이트). 테스트를 위해서는 다음과 같이 시도합니다.

unsigned char data[32*32*4];

for( int i=0; i< sizeof(data); ++i) data[i]=rand();
// Don't forget to #include <stdlib.h>

glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA , 32, 32, 0, GL_RGBA , GL_UNSIGNED_BYTE, (GLvoid *)data );

다른 가능한 형식 : GL_BGRA (다른 바이트 순서), GL_RGB (알파가없는 경우). 나중에 사용하기 위해 텍스처 설정을 기억하려면 glgentextures / glbindtexture를 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top