我使用float r,float g,float b,float alpha創建了Color
類。它有一個基類,虛擬析構函數。OpenGL與C++:將類數組傳遞給glTexImage2d時的vtable問題
我想將顏色數組傳遞給opengl函數glTexImage2D
,其中GL_RGBA
組織的類型爲float(這將是{float r,float g,float b,float alpha}的數組)。這需要Color
僅包含4個浮點數(大小爲的字節爲)。
然而,sizeof(Color)
揭示了我的類有一個大小的20個字節由於基類的Color
具有虛表,由於析構函數。
如何保留我的vtable,並仍然將我的Color數組傳遞給glTexImage2D
?
以便攜式,標準方式?你絕對不能。將不可移植,非標準的黑客做什麼? (不是我知道一個,但仍然需要讓社區知道:) –
您不應該將圖像存儲爲'Color'數組。這個vtable在這種情況下是一個巨大的回憶。無論如何,您可能無需在單個圖像中使用不同的像素格式。但是,如果您想將它傳遞給'glTexImage2D',那麼首先將它轉換爲單獨的內存緩衝區中的普通數組。 – HolyBlackCat
爲什麼你使用虛擬類型呢?什麼是虛擬析構函數?它有虛擬功能嗎?如果是這樣,*爲什麼*? –