2016-11-18 15 views
0

說我正在掃描一個三角形列表,每個三角形都有一個固定的r,g,b值(顏色)。我想將每個三角形的r,g,b分量存儲在二維數組中,並在稍後檢索它們。如果屏幕的寬度和高度分別爲w和h,我可以聲明一個大小爲w * h的數組,但是如何將3個組件(r,g,b)存儲在C++中的某個位置?在C++中存儲二維數組中的r,g和b分量

+2

您可以使用結構。例如:'struct color {int r,g,b;}; color * array = new color [w * h];' – MikeCAT

+0

它可以是一個struct {r,g,b}的數組,但通常只需將三個字節打包成一個整數並將像素的rgb值存儲爲一個整數。 –

回答

2
constexpr std::size_t w = /* some constant */; 
constexpr std::size_t h = /* some constant */; 

struct Color { 
    int r, g, b; 
}; 
Color color[w][h]; 

店在結構

+0

這是一維數組,謝謝編輯=) – Eddge

+1

請注意,當'w'和'h'是常量時,此代碼將工作,但標準C++不支持可變長度數組。 – MikeCAT

0

有幾個方法可以做到這一點...你可以使用位掩碼和位,用於存儲和檢索二維int數組的值,可以使自定義結構或類稱爲顏色是這樣的:

struct Color 
{ 
    float r; 
    float g; 
    float b; 
}; 

然後聲明您的數組爲:

Color screenColors[1024][768]; 

您可以送花兒給人s將1024和768值聲明爲常量整數並使用它們而不是對值進行硬編碼。

如果您想了解bitmasking雖然我會推薦閱讀更多信息: http://www.learncpp.com/cpp-tutorial/3-8a-bit-flags-and-bit-masks/