Bibliothèques pour le dessin de pixels en C++ similaires aux bytebuffers en Java

la programmation


Une question très simple est que j’ai besoin d’une bibliothèque pour écrire des pixels bruts similaires aux ByteBuffers en Java (si vous êtes familier avec cela), en utilisant
une sorte d’objet image, qui peut être utilisé avec la méthode de dessin de pixels (avec quelques trucs de raytracing) que je vais démontrer.

La façon dont je trace des rayons consiste à écrire le rayOrgin, discriminant, et à renvoyer la couleur dans une fonction nommée PerPixel de type int avec un vecteur à 2 flotteurs nommé “coord”, puis à fournir les données aux données d’image via une boucle for imbriquée.

Voici à quoi cela devrait ressembler :

C++
for (int y = 0; y < IMAGE_WIDTH; y++)
{
  for (int y = 0; y < IMAGE_HEIGHT; y++)
  {
    Vector2f coord = { x / (float) IMAGE_WIDTH, y / (float) IMAGE_HEIGHT };
    imageData[x + y * IMAGE_WIDTH] = PerPixel(coord);
  }
}

int PerPixel(Vector2f coord)
{
  // RAYTRACING STUFF
  // ORDER CAN BE RGBA, ARGB, RGB and etc. just needs to have Red, Green and  Blue channels.
  if (discriminant >= 0)
     return 0xffff00ff;
  return 0xff000000;
}

Ce que j’ai essayé :

J’ai essayé SDL, mais lorsque j’ai créé correctement l’image, cela a simplement échoué lorsque je suis passé à la partie lancer de rayons. J’ai essayé OpenGL
à la place, mais cette fois, cela m’a donné une exception lorsque j’ai essayé de créer une image à l’aide de VAO, VBO, TBO, etc.

À l’exception de la création d’images, je n’ai pas besoin d’un gros tutoriel, juste d’un extrait de code de quelque chose de similaire à l’extrait de code que j’ai montré plus tôt en travaillant avec une bibliothèque (et donnez-moi aussi évidemment le nom de la bibliothèque).

Solution 1

Solution 2

Quel OS utilisez-vous ? Votre programme utilise-t-il un cadre de code particulier ? Ces questions sont importantes pour déterminer quelles bibliothèques sont à votre disposition.

Si votre programme est pour Windows et que vous utilisez MFC, vous pouvez utiliser l’excellent CxImage[^] classe pour créer un bitmap mis en mémoire tampon, écrire sur des pixels individuels, puis transférer l’image entière vers le tampon de trame. Je fais exactement cela dans mes applications et c’est assez simple. Il est également très facile d’accéder à un tampon d’image et de l’écrire dans un fichier.

コメント

タイトルとURLをコピーしました