您可以分配自己的圖像緩衝區,寫你的像素,然後保存到文件/需要繪製到窗口。我期望Pharr的書有自己的版本隱藏在某個地方,由Literate Programming提供。
更具體地說:GUI API和圖像文件格式庫通常能夠讀取以行主陣列順序存儲的簡單圖像緩衝區數據。我會建議一個RGBA像素格式,類似如下:
template<class T> class image_rgba {
unsigned m_rows, m_cols;
T *m_data;
public:
image_rgba(unsigned rows, unsigned columns)
: m_rows(rows)
, m_cols(columns)
, m_data(new T[rows*columns*4])
{}
~image_rgba() { delete[] m_data; }
typedef T pixel[4];
pixel index_pixel_ref(unsigned row, unsigned col) {
assert(row<m_rows && col<m_cols);
return m_data + (m_cols*row+col)*4;
}
}
(請注意,我沒有測試以上 - 最好把它當作僞...)
我的理解,PPM確實不支持.PNG或.JPEG文件,對不對?如果我想創建其中一個,我應該怎麼做? –
@MertToka,我編輯了我的答案。 – lhf
我查了一下,但現在對我來說似乎太複雜了,或者我得睡個好覺。不過謝謝,我會盡力在不久的將來了解它。但是如果你知道任何libpng的簡單源代碼,它仍然是非常值得讚賞的。 –