Intel Mac OS X 10.6.x의 C++ 응용 프로그램에서 작업 중입니다. OpenGL 호출 glReadPixels 사용하여 얻은 픽셀 데이터를 포함하는 변수가 있습니다. x86_64 어셈블리 명령어를 사용하여 픽셀 데이터에 직접 작업을 수행하려고합니다. 어셈블리 루틴은 테스트 프로그램에서 잘 작동하지만 픽셀 데이터에서 사용하려고하면 픽셀 데이터 변수가 가리키는 메모리 위치에서만 0이됩니다. 나는 x86_64 어셈블리에서 직접 비디오 메모리에 액세스하려고 시도하고 있기 때문에 이것이 추측입니다. 어셈블리에서 직접 x86_64 비디오 메모리에 액세스하는 방법이 있습니까? 그렇지 않으면이 상황을 어떻게 해결할 수 있습니까?x86_64 어셈블리의 OS X 비디오 메모리
모든 포인터를 이해하십시오. 미리 감사드립니다.
마지막 n 및 첫 번째 n 바이트를 뒤집는 코드 샘플은 아래를 참조하십시오. 동일한 코드가 테스트 프로그램에서 잘 작동합니다.
void Flip(void *b, unsigned int w, unsigned int h)
{
__asm {
mov r8, rdi //rdi b
mov r9, rsi //W
mov r10,rdx //H
mov r11, 0 // h <- 0
mov r12, 0 // w<- 0
outloop:
------------
.............
.............
}
비디오 메모리에 직접 액세스하지 않습니다. 'glReadPixels()'가 성공했는지 확인하고 있습니까? – Blrfl
예 - glReadPixels가 정상적으로 작동합니다. –
'glReadError()'를 호출 할 때와 마찬가지로 작동하며'GL_NO_ERROR'를 반환합니까? – Blrfl