问题标签 [stb-image]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何解决来自 stb_image 的这些编译器警告?
我正在使用 stb_image 库来帮助加载图像/纹理,遵循“The Cherno”的 OpenGL 教程播放列表。虽然我能够成功加载和渲染图像,但每当我构建我的项目时,我都会收到这些编译器警告。如何在不禁用警告的情况下解决这些警告?
警告:
stb_image.h 文件代码是从这个网站获得的(代码没有被改变):https ://github.com/nothings/stb/blob/master/stb_image.h
stb_image.h 实现:
c - 将旋转图像写入 jpeg 文件的问题
在主要部分,我旋转了图像。然后我编写了一个代码,用于将我的图像作为 jpeg 文件写入项目文件中。我做不到。
这是我的代码:
它们是我使用的一些定义和库。(我还添加了标准库。)
在这部分之后,我想将我的图像写为 jpg 文件。所以这是写作部分:
我不确定第二部分,所以我与你分享。顺便说一句,我在这两个函数中都没有遇到任何错误。(主要和写)
如果您想要完整的代码,请在评论部分告诉我。我也可以分享我的主要功能。
c++ - 将 uint8_t* 传递给 void* 参数函数时丢失数据?
我编写了这个函数来在 OpenGL 中生成纹理。它正确地生成了我想要的纹理,它是一个木盒。
我想将该功能包装到另一个函数中,但是当我这样做时 glTexImage2D 似乎没有生成正确的纹理。我得到的不是木箱,而是黑色纹理,表示纹理无法生成。当我从 uint8_t* 转换为 void* 时会丢失数据吗?做这个的最好方式是什么?
这是我的 TextureProperties 结构:
c++ - 如何使用 stbi 保存每像素 1 位的 png?
很长时间以来,我一直在努力为 C++ 中的学生设计简单的位图问题。问题是那些不容易使用的库。stbi,一个只包含的库完全解决了这个问题,现在学生可以轻松加载和保存图像,让我专注于给他们解决在位图类中创建各种图像的问题,然后通过简单的调用将其写出来。
https://github.com/nothings/stb
但是,我想对涉及 ARM 汇编程序的微处理器类做同样的事情,我想要一个每像素 1 位的位图,最好是 png。我找不到写出这种类型的 png 的示例。有谁知道怎么做,最好使用 stbi 或使用其他库在 windows、mac 和 linux 之间简单便携?
以下将对每像素 4 个字节的 png 执行此操作。我想要每像素 1 位。
或者,我发现在 libpng++ 中有一个比 libpng 更简洁的 API。
谁能告诉我如何让图像的地址与原始位一起使用?C++ API 提供方括号,我挖了一点,但找不到任何我可以获取地址的东西。
c++ - 无法使用 stb_image
我正在做一个项目,我试图加载一个图像,以便我可以将它用作纹理,但是当我尝试包含 stb_image 时遇到了一个问题。
我放入stb_image.h
,src/vendor/stb_image/
制作了一个名为的cppstb_image.cpp
文件
在文件中,并将文件放在 src/vendor/stb_image/
目录中。当我尝试包含#include "vendor/stb_image/stb_image.h"
并使用它时,我收到此错误:
这是我试图运行的代码,它使用了 stb_image:
我尝试#define STB_IMAGE_IMPLEMENTATION
使用 stb_image 放入文件,然后将其包含在内,但效果不佳。比以前好多了,但是当我尝试加载图像时,什么也没发生。我打印了一些图像数据
它打印m_BPP: 0 m_Width: 0 m_Height: 0
(默认值,意味着它没有加载任何东西)。m_LocalBuffer 也是空的。我没有任何 opengl 错误或编译器错误,所以我不知道我做错了什么。我正在使用 cmake 和 ninja 来构建,如果有帮助的话。我用来构建的 cmake 文件和 build.sh 文件将包含在下面。
CMakeLists:
构建.sh:
我可以将所有代码放在 github 上,并在必要时发送指向 repo 的链接。
c++ - 为什么这个纹理没有出现?
我正在按照 learnopengl.com 的教程制作游戏引擎。
我正在使用 stb_image.h 加载纹理,并使用我自己的头文件来编译和链接着色器。
我进入了入门/纹理中的部分,其中 container.jpg 纹理应该填满窗口上的矩形。但是每当我编译和运行代码时,纹理都不会出现在窗口的任何地方。这是我的纹理加载代码:
这些是四边形的坐标:
渲染代码:
顶点着色器代码:
片段着色器代码:
请注意,图像加载器或着色器编译器不会返回错误代码。 矩形看起来像这样。
c++ - 我的 openGL 纹理类中有什么愚蠢的错误?
我正在制作一个 openGL 引擎,我在片段着色器中的纹理返回黑色,我很确定问题出在纹理类(可能是 .cpp 文件)中,我知道它以前工作过。
我不确定我做了什么让它生气,但我很确定这不是一个大问题,
也很确定路径很好,我应该把它改成不采用镜面纹理吗?
纹理.h
纹理.cpp
创建纹理-
c++ - C++ OpenGL stb_image.h 错误
我正在关注https://learnopengl.com/(特别是https://learnopengl.com/Advanced-OpenGL/Depth-testing)的 OpenGL 教程,我有很多与 stbi 有关的错误。错误日志图像在这里(下面我还附上了完整的输出选项卡)。我在 main.cpp 文件的顶部添加了“#define STB_IMAGE_IMPLEMENTATION”(而不是在标题中)。如果我不使用任何 stb_image 功能,项目将编译并运行。我有一些项目,其中 stb_image 工作得很好,但所有那些工作的项目都是 x86(或 32 位)。看来我无法使用 x64(或 64 位)获得 stb_image。我知道 x64 本身可以工作,因为已经编译了其他没有 stb_image 的 x64 项目。我还回顾了我下载 stb_image 头文件的位置,并且没有 x64 与 x86 的选项,因为只有一个通用选项。这是文件组织方式的图像:文件层次结构. 我还将包含我的 main.cpp 文件,但如果您想查看特定文件,请告诉我。我对 c++ 很陌生,因为我来自 java 和 python,因此感谢您的帮助。
c++ - 如何使它成为相对路径?
我正在研究一些 OpenGL 的东西,并且在加载纹理时,我使用的是绝对路径,这显然是不好的。我的问题是我找不到如何将这些路径转换为相对路径的资源。这是采用路径的代码。
语言:C++
操作系统:Windows 10(虽然我更希望有一个跨平台的解决方案)
此处使用的库和头文件:OpenGL 4.6(通过 GLAD 加载)、stb_image.h
IDE:Visual Studio 2019
到目前为止,我还无法用一个有效的、不太具体和冗长的路径替换该路径。