问题标签 [soil]

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.

0 投票
1 回答
524 浏览

c++ - OpenGL(使用 SOIL)总是加载相同的图像

当我加载图像时,为其他内容加载的下一个图像是相同的图像。

基本上:

我正在制作 Pong 复制品,桨和球都有纹理(是的,我确保它们都是不同的)。你可以在这里找到源代码。球拍可以很好地加载图像,但是当涉及到球时,它会加载与球拍相同的图像(Paddle = Paddle.cpp,Ball = Ball.cpp)。

它可能有什么问题?我是否错误地使用了 SOIL?

0 投票
2 回答
1460 浏览

xcode - 在 Xcode 4.2.1 项目中包含标头

我正在尝试使用一个库,特别是 Xcode 4.2.1 中的 SOIL(简单 OpenGL 图像库)。在 Build Phases -> Link Library with Libraries 下,我添加了 SOIL zip 存档附带的所有 .h 和 .c 文件。

当我构建项目时,对于添加的每个 .h 和 .c 文件,我都会收到以下错误消息:

警告:跳过文件“/Users/saw/XcodeProjects/Assignment01 copy/Assignment01/image_DXT.c”(在框架和库构建阶段出现意外的文件类型“sourcecode.cc”)

和链接器错误:

“_SOIL_load_OGL_texture”,引用自: init() in main.o Symbol(s) not found for architecture x86_64 Clang: error: linker command failed with exit code 1 (使用 -v 查看调用)

0 投票
1 回答
1324 浏览

c++ - 在 g++ linux 上链接静态 libSOIL.a 的未定义参考

我正在尝试构建我的 openGL 项目,在我尝试使用 SOIL 库 (http://www.lonesock.net/soil.html) 从图像加载纹理之前,一切都运行良好。这个库带有一个 SOIL.h 和一个 libSOIL.a 文件。

这就是我做make时得到的:

这就是我的 Makefile:

这就是我的文件层次结构:

我不知道发生了什么,以及为什么编译器找不到库文件。我在 Texture.h 中有 #include "SOIL/SOIL.h",在 Texture.cpp:9 中有对 SOIL_load_OGL_texture 的调用,这是 SOIL.h 中定义的函数名称。¿ 我做错了什么?

编辑

我正在使用提供的库,我自己编译它并且它有效。

0 投票
1 回答
1386 浏览

c - opengl 土壤质地

这是我从 VS2010 收到的错误消息:

AzimuthalEqui.e​​xe 中 0x77358dc9 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000014。

产生此错误的代码行是:

在进入这个功能之前:

texture_filename = "数据/texture.jpg"

SOIL_LOAD_AUTO (= 0)

SOIL_CREATE_NEW_ID (=0)

SOIL_flags = 16 (=SOIL_FLAG_INVERT_Y)

问题是当我包含一个我为解析文本文件中的某些信息而编写的文件时,会生成错误,否则会加载并显示纹理。这个问题很可能是由一个函数引起的,因为当这个特定函数被删除时,代码会加载并显示纹理。这是添加到我的项目时导致错误发生的功能:

它与打开文件进行阅读有关......如果我注释掉这些行,纹理加载正确:

这是我的简化代码(我认为这不是问题,但以防万一)。[我的完整代码可能有一些残余]:

0 投票
1 回答
1184 浏览

opengl - SOIL OpenGL 库在类内部崩溃

我正在使用 OpenGL 开发一个简单的 3D 模型加载器,我想添加纹理支持。但是,不想不必要地重写图像库,我下载了我在 NeHe 纹理映射教程中学到的 SOIL(简单 OpenGL 图像库)。它有一些非常有用的函数来处理多次加载图像并将它们传递给 OpenGL。

问题是这样的:在NeHe教程代码中,SOIL函数

完全按照承诺,多边形映射到正确的图片。但是,我创建了一个加载 OBJ 和 MTL 文件(3D 模型文件)的类。当我尝试使用 SOIL 函数在此类中加载纹理时,我的程序崩溃了。

  • 我正在使用带有 Code::Blocks 的 GNU C++(我也在 Dev-C++ 中尝试过这段代码)
  • 我使用 -g -Wall 没有收到来自编译器的错误或警告。
  • 我已将所有内容正确链接并包含在我的项目中(如果我复制/粘贴 NeHe 代码,它会正常运行)。
  • SOIL 命令在任何类中都不起作用(我尝试创建另一个只执行 SOIL 函数的类,但我遇到了同样的问题)。
  • 传递给函数的文件路径都是正确的。我尝试过相对和绝对,所有格式的正斜杠和反斜杠。我将在 NeHe 代码中有效的绝对路径复制并粘贴到我的代码中,但它不起作用。
  • 我的其余代码工作正常 - 我可以使用环境/漫反射/等渲染我的形状。颜色和其他设置正确应用。
0 投票
1 回答
3567 浏览

xcode - xcode 4.0.2 SOIL 库链接错误 (OSX 10.6.8)

我的用户故事:我想将纹理加载到我的 openGL 程序中。

我的问题:如何在 xcode 4.0.2 中正确链接 SOIL 库

所以,在过去的几天里,我一直在谷歌上搜索我在 xcode4 中的链接器警告,但我无法自己回答——所以我敢于在这个主题上发布另一个线程......(谦虚的初学者把尾巴夹在两腿之间)。

我的基本复制步骤:

  1. 我将“简单 OpenGL 图像库”解压缩到我的下载中
  2. 我将 libSOIL.a 拖放到我的项目文件中

    • 在“构建阶段”下,libSOIL.a 会自动添加到“使用库链接二进制文件”
    • 在“构建设置”下,我的库搜索路径也会自动更新
    • 我的有效架构已经指定“i386 x86_64”

当我尝试运行我的程序时收到此警告:

ld:警告:忽略文件/Users/Scott/Developer/Projects/SpaceRanger/Code/Production/lib/libSOIL.a,文件是为存档而构建的,它不是被链接的架构(x86_64)

正如我所提到的,我对编程和 IDE 很陌生,所以我希望在 OpenGL(例如 SOIL)中加载纹理的更简单的方法对 SDL 甚至 GLFW 有利。如果我在只加载一个库时遇到这种麻烦,那肯定是我不知道的。

基于搜索的其他 Hit n' Miss 尝试:

  • 将库添加到“编译源”只会产生更多警告
  • 切换“仅构建活动架构”是/否
  • 将方案设置为 32 位和 64 位
  • 编写我自己的纹理加载器,使用 libjpg/DevIL/等。

恐怕我开始破坏我的项目只是试图链接这个库。如果有人可以帮助我在 xcode 4.0.2 中正确链接 SOIL 库,我将永远感激不尽。

提前深深感谢您。

-克罗普克

0 投票
1 回答
1528 浏览

xcode - Xcode:无法使用 SOIL 构建 OpenGL 项目

我尝试在带有 OpenGL 的 C++ 项目中的 Xcode 下运行 SOIL。当我将文件添加到我的项目时,它会自动将“libSOIL.a”添加到目标的“Link Binary With Libraries”。我在 main.cpp 中添加了:

当我构建项目时,我总是得到错误

/.../Projects/XCode/OpenGLTest/OpenGLTest/lib/soil/src/test_SOIL.cpp:4:10: 'windows.h' 文件未找到

我不知道为什么 SOIL 试图用“widows.h”编译一些东西,因为我在 OS X 下。我搜索了网络,但没有找到解决方案。我希望有人可以在这里帮助我并解释我是否可以轻松运行 SOIL。

谢谢。

0 投票
2 回答
13564 浏览

c - Visual Studio 2010 中的 SOIL 设置

我无法让 SOIL在 Visual Studio 2010 中正常工作——我远非 VS 专家,但据我所知,让环境正常工作只需要以下步骤:

属性>>C/C++>General>>Additional include目录 添加到SOIL.h的路径

属性>>链接器>>常规>>附加库目录添加到libSOIL.a的路径

我也在使用免费的 GLUT,并且 glut 文件的路径也在此处设置——我还将 Dubugging>>Environment Path 设置为 GLUT bin 文件。

当我使用 SOIL_load_OGL_texture 时,出现以下错误:

错误 LNK2019:函数“void __cdecl init(void)”(?init@@YAXXZ) 中引用的未解析外部符号 _SOIL_load_OGL_texture

尝试将 libSOIL.a 重命名为 libSOIL.lib 和 SOIL.lib,但没有成功。然后,我构建了 VC8 项目并按照此处的建议使用了该 .lib 土壤未正确链接,但这也不起作用。

我正在使用他们主页上的示例代码

0 投票
1 回答
4020 浏览

c++ - SOIL:使用 Xcode 在 C++ 和 OpenGL 中“无法打开文件”

我正在尝试使用 SOIL 加载纹理文件。我尝试从项目文件中加载图像,也尝试从文件系统中加载图像。当我尝试从项目中加载我的图像时,SOIL_last_result()出现错误:

无法打开文件

但应用程序无论如何都会运行。

当我在我的系统中输入图像的完整路径时,我得到(当我构建项目时):

懒惰的

我不知道那里出了什么问题。我读到它可能是代码中存在任何其他错误,这就是我在这一点上遇到问题的原因。

这是整个代码:

0 投票
3 回答
32116 浏览

visual-c++ - bmp图像格式可以处理透明度吗

我正在制作这个具有按钮、按钮容器、聊天框等的 C++ 程序,并且我想用纹理将它包裹起来。

我想为我制作的所有矩形生成平滑的边缘,并且我不希望顶点绘图方法为它完成工作,因为它消耗更多的 CPU 使用率并且看起来不太好,我不知道是否它可以使用纹理坐标(即glTexCoord(u, v)glVertex2f(x, y) w/c 应该只有 4,因为它是一个四边形)

我曾经使用SDL_LoadBMP() w/c 加载纹理,只能加载.bmp的格式。(我不确定,因为那里只说 LoadBMP)。

所以我的问题是:

  • .bmp格式可以处理透明度吗?如果是这样,该怎么做?

  • 你能告诉我一些使用SOIL加载.gif格式的图像或任何其他可以处理图像透明度的格式的代码示例吗?

  • 四边形可以在不绘制背景的情况下处理六边形或星形等不规则/多边形形状吗?

附加问题

*如何导入通过c ++ opengl呈现的原始文本框,以便我可以将那里的文本复制到剪贴板?至于我程序中的聊天会话。


我制作了自己的库,该库使用 GL_POINTS 绘制文本,并且在调整窗口大小时看起来不太好,因为这些点已展开。需要const char*避免文本,#include <*string*>因为我希望我的程序不依赖于 C++ 的核心功能。

所以更好的解决方案是使用位图来绘制它。

有些人建议使用图像来绘制它,所以我真的需要透明度的东西,因为我希望它只使用四边形来绘制。