2017-04-26 16 views
0

SDL_GetWindowSize()を使用する適切な方法は何ですか?私が得たエラーmsgによると、整数なのでWIDTHとHEIGHTは使用しないでください。だから、彼らの場所で何を使うべきですか?sdl2.SDL_GetWindowSizeにはどのような関数パラメータを使用する必要がありますか?

import sdl2 

APP_SHORT_NAME = 'Test' 
WIDTH = 400 
HEIGHT = 400 

sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO) 
window = sdl2.SDL_CreateWindow(
    APP_SHORT_NAME.encode('ascii'), 
    sdl2.SDL_WINDOWPOS_UNDEFINED, sdl2.SDL_WINDOWPOS_UNDEFINED, 
    WIDTH, HEIGHT, 0) 

sdlWindowsize = sdl2.SDL_GetWindowSize(window, WIDTH, HEIGHT) 
print('sdlWindowsize = {0}'.format(sdlWindowsize)) 

エラーメッセージ: - それは、結果の値が保存されます、ウィンドウ、およびintに二つのポインタ

Traceback (most recent call last): 
    File "/home/sunbear/Coding/Vulkan/vulkan/MyProject/LunarG_cube_example/sdl2_window.py", line 13, in <module> 
    sdlWindowsize = sdl2.SDL_GetWindowSize(window, WIDTH, HEIGHT) 
ctypes.ArgumentError: argument 2: <class 'TypeError'>: expected LP_c_int instance instead of int 

答えて

0

SDL_GetWindowSizeは、3つのパラメータを期待しています。これは値を返しません。 pysdl2はctypesのを使用するように、例えばなければならない:

import sdl2 
import ctypes 

APP_SHORT_NAME = 'Test' 
WIDTH = 400 
HEIGHT = 400 

sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO) 
window = sdl2.SDL_CreateWindow(
    APP_SHORT_NAME.encode('ascii'), 
    sdl2.SDL_WINDOWPOS_UNDEFINED, sdl2.SDL_WINDOWPOS_UNDEFINED, 
    WIDTH, HEIGHT, 0) 

w = ctypes.c_int() 
h = ctypes.c_int() 
sdl2.SDL_GetWindowSize(window, w, h) 
print("w=%d h=%d" % (w.value, h.value)) 
+0

ではなく '')( 'W = ctypes.c_intことと' H = ctypes.c_int()する必要がありますか?私はこれらを試して、彼らも働いた。 'w = ctypes.c_int(WIDTH)'と 'h = ctypes.c_int(HEIGHT) 'を使用すると、ウィンドウの幅と高さを取得するためにWIDTHとHEIGHTがSDL_GetWindowSize()に渡される必要があるという印象を与えました。奇妙に見える。 –

+0

そうです、ちょうどintialな値です。その場合は関係ありません。しかし、はい、代わりに0に初期化する方が良いでしょう。 – keltar

+0

回答を更新/改訂できますか? –

関連する問題