2014-08-17 4 views
0

Мой вопрос в том, как я могу нарисовать один пиксель на экране с использованием собственных библиотек и функций C++? Я имею в виду не использовать внешние функции или библиотеки. Как это возможно?Как нарисовать один пиксель

Нечто подобное:

int rgb = {255,150,113}; 

nativeLibrary.drawPixel(0,1, rgb); 

Причудливый пример только это.

+8

C++ не предоставляет «родную» графическую библиотеку. –

+0

почему кто-то хотел бы сделать это любым способом? – Samer

+0

Я только один, чтобы знать. Я собираюсь сделать некоторые графики (образовательные, а не профессиональные) –

ответ

4

Вы не можете. В C++ нет (пока) каких-либо встроенных графических или графических библиотек.

+0

Итак, должен ли я затем пойти и изучить OpenGL ? –

+1

@MostafaTalebi, который зависит от того, чего вы хотите достичь в некоторых целях, - это GDI лучше для других GL, DX для других, даже более высоких уровней, таких как SDL или некоторые двигатели ... все идет на целевую платформу, fps, 2D/3D/ND и графику type (bitmap, vector, volumetric ....) – Spektre

+0

Я бы добавил: «У меня еще нет». Приближается. Страуструп хотел этого на протяжении десятилетий. –

1

Как и в предыдущем ответе, нет никакой родной библиотеки для обработки изображений. Однако, если вы работаете в Windows API и, в частности, MFC, вы можете использовать класс CBitmap.

+1

CBitmap не входит в Windows API (WinAPI не имеет классов). Это класс MFC. –

+0

И MFC ужасно устарел. Использование этого для любого нового проекта очень сомнительно. –

3

C++ может в конечном итоге добавить графику в стандарт (they were considering it), но на данный момент стандарт C++ не включает графику.

Вы можете использовать другие стандарты, чтобы писать пиксель на экран. Если вы работаете в Linux, there is already an answer up.

Если вы используете VGA, вы можете на самом деле write directly to the VGA buffer (ПРЕДУПРЕЖДЕНИЯ: ПУТЬ устаревшей Как «предназначены для DOS» устарели). Вероятно, вы использовали бы встроенную сборку C++ для установки режима рендеринга вместо того, что использует эта страница, а затем используйте обычный unsigned char* вместо «дальнего» указателя для доступа к нему. Хотя вы, вероятно, не используете VGA и, вероятно, не хотите использовать сборку (особенно встроенную сборку).

Итак, что вы делаете за пределами этого? Не важно. Вам нужно использовать внешнюю библиотеку специально для рендеринга, поэтому, возможно, OpenGL или DirectX или какая-либо библиотека, использующая их.

Смежные вопросы