简单的 OpenGL 纹理贴图不起作用?

2023-11-26

我正在尝试找出 OpenGL 中的纹理映射,但无法找到一个简单的示例来工作。

正在绘制多边形,尽管它没有纹理而只是纯色。此外,位图已正确加载到 sprite1[] 中,因为到目前为止我已成功使用 glDrawPixels 。

我使用 glGenTextures 来获取我的 tex 名称,但我注意到它不会更改 texName1;这个 GLuint 是我将其初始化为的任何内容,即使在调用 glGenTextures 之后...

我已启用 GL_TEXTURE_2D。

代码如下:

GLuint texName1 = 0;

glGenTextures(1, &texName1);
glBindTexture(GL_TEXTURE_2D, texName1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, sprite1[18], sprite1[22], 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, &sprite1[54]);

glColor3f(1, 1, 0);
glBindTexture(GL_TEXTURE_2D, texName1);
glBegin(GL_QUADS);
    glTexCoord2f (0.0, 0.0);
    glVertex3f (0.0, 0.0, -5.0f);
    glTexCoord2f (1.0, 0.0);
    glVertex3f (.5, 0.0, -5.0f);
    glTexCoord2f (1.0, 1.0);
    glVertex3f (.5, .5, -5.0f);
    glTexCoord2f (0.0, 1.0);
    glVertex3f (0.0, .5, -5.0f);
glEnd();

更新: 我不知所措。这是我尝试过的一切:

  1. 结果我在 OGL 初始化之前初始化了纹理。纹理在类构造函数中初始化(glGenTextures->glTexImage2D),并在每帧调用的成员函数中绘制(glBegin->glEnd)。 genTextures 现在似乎工作正常,我得到的名称为 1。

  2. GL_RGBA8、GL_BGRA_EXT 的每种可能的组合(GL_BGRA 在我的系统上不起作用;我需要 _EXT),我什至从位图中删除了 alpha 通道,并尝试了 GL_RGB、GL_BGR_EXT 等的所有组合。没有运气。

  3. 尝试按程序创建位图并使用它

  4. 确保 GL_COLOR_MATERIAL 未启用。

  5. 将位图大小更改为 32x32。

  6. 尝试使用 glTexEnvi 而不是 glTexEnvf。


此外门塔特的笔记您可能会遇到非二次方纹理尺寸的问题,您提到纹理名称生成不更改名称。

听起来好像你在打电话glGenTextures()太早了,即在初始化 OpenGL 之前。如果您不是,那么我建议在调用后添加代码glGenTextures()通过调用检查 OpenGL 错误状态glGetError().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单的 OpenGL 纹理贴图不起作用? 的相关文章

  • VLC 媒体播放器有 C# 界面吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以使用 C 控制台应用程序中的包装器从 VLC 播放中当前播放的文件中读取曲目统计信息 时间 标
  • 格式说明符%02x

    我有一个简单的程序 include
  • 是否需要销毁运算符删除的形式才能真正销毁对象?

    C 20 添加了破坏形式operator delete区别于std destroying delete t范围 它导致delete表达式在调用之前不再销毁对象operator delete 目的是在显式调用对象的析构函数和释放内存之前 允许
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • C:设置变量范围内所有位的最有效方法

    让我们来int举个例子 int SetBitWithinRange const unsigned from const unsigned to To be implemented SetBitWithinRange应该返回一个int其中所有
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K

随机推荐

  • 安装时在 Inno Setup 中显示许可协议链接

    我正在为我的应用程序使用 Inno Setup 我想在安装时在 Inno Setup 中显示一个链接 许可协议 单独的许可协议向导除外 我想将此链接与某些任务结合起来 当用户单击该链接时 它将导航到特定的 URL 我知道我来晚了 以下代码脚
  • 为什么这个 Java 正则表达式会导致“非法转义字符”错误?

    我正在研究一个上一个问题的解决方案 尽我所能 使用正则表达式 我的模式是 d 4 w 3 0 1 9 12 0 9 3 01 01 0 9 2 0 3 0 5 0 9 2 根据 NetBeans 我有两个非法转义字符 我猜它与 d 和 w
  • 相当于Firestore中的.push?

    我正在尝试将以前使用实时数据库的 firebase 实现转换为使用 firestore 因为我喜欢集合的想法以及使用它的好处 我如何将以下内容实现为 firestore 等效项 firebase database ref documentP
  • Django 将现有字段更改为外键

    我有一个 Django 模型 以前看起来像这样 class Car models Model manufacturer id models IntegerField 还有另一种模型叫Manufacturer那id字段指的是 然而 我意识到使
  • Hibernate 在 HQL 中处理“@”字符时遇到困难

    使用 Hibernate 和 Spring Social 我正在尝试通过电子邮件地址查询数据库 当我执行此查询时 公共帐户 findAccountByUsername String 用户名 Session session sessionFa
  • $观察一个物体

    我想监视字典中的更改 但由于某种原因未调用监视回调 这是我使用的控制器 function MyController scope scope form name my name surname surname scope watch form
  • 是否可以终止正在运行的 Web Worker?

    我有一个网络工作人员使用 ajax 请求运行一项耗时的例行任务 我可以从主线程终止它们而不等待它们完成吗 这就是我生成和终止它的方式 button parse categories click function if parseCatego
  • 使用和不使用额外变量时的奇怪浮点行为,为什么?

    当我在 VC 2013 32 位 无优化 中运行以下代码时 include
  • C# 寻找相似颜色

    我想调用带有参数颜色的方法 但有很多颜色仅存在色度差异 我怎样才能找到与我的颜色只有一点点不同的颜色 例如 AntiqueWhite 和 Bisque Here s调色板 Bitmap LogoImg new Bitmap file1 jp
  • Android - 检测 URL mime 类型?

    在我的 Android 应用程序中 我有从数据库访问的各种 URL 然后打开 WebView 来显示该 URL 通常 该 url 看起来像这样 http www mysite com referral php id 12345 这些引荐链接
  • 将页面添加到活动管理

    我们想要向我们的管理添加一个帮助页面 并且我们正在使用活动管理 gem 此页面不与任何模型关联 因此我正在努力弄清楚如何让链接显示在每个页面的菜单栏中 我知道我有点晚了 但我通常都会迟到 D ActiveAdmin register pag
  • 禁用 EditText 闪烁光标

    有谁知道如何禁用闪烁的光标EditText view 您可以使用 xml 属性android cursorVisible false 或以编程方式 java view setCursorVisible false kotlin view i
  • 从 Java 调用 .NET 程序集:JVM 崩溃

    我有一个第三方 NET 程序集和一个大型 Java 应用程序 我需要从Java应用程序调用 NET类库提供的方法 该程序集不支持 COM 我已经在网上搜索过 到目前为止我有以下内容 C 代码 cslib cs using System na
  • 如何获取 30 天内的下一个最小日期并用作 SQL 中的参考点?

    我有一个记录子集 如下所示 ID DATE A 2015 09 01 A 2015 10 03 A 2015 10 10 B 2015 09 01 B 2015 09 10 B 2015 10 03 对于每个 ID 第一个最小日期是第一个索
  • 这个字符序列“\033[H\033[J””在 C 中起什么作用? [复制]

    这个问题在这里已经有答案了 我在一些随机网站上浏览过以下奇怪的字符序列 当编译并执行时 该序列清除了终端中所有先前的内容 它清除输出流中的缓冲区还是仅清除 tty 缓冲区 int main printf 033 H 033 J return
  • C# ping 我的世界

    所以找到了这个小代码片段 可以让你在 PHP 中 ping Minecraft 服务器 但现在我想在 C 中执行此操作 我尝试自己这样做 但由于某种原因它不起作用 UdpClient client new UdpClient IPEndPo
  • Python 比较 C API 中的对象

    给定两个PyObject s 我如何在 C API 中比较它们 我想到了a b起初 但这显然是不正确的 因为它会比较指针而不是对象 我在找a b not a is b Python C API 中的 Python 等效项 您正在寻找PyOb
  • mvn 测试因 Surefire JDK 版本而失败?

    我正在尝试在我的项目上运行 mvn test 项目本身编译并安装 但 man test 失败并显示以下输出 ERROR Failed to execute goal org apache maven plugins maven surefi
  • 使用Leaflet markcluster,如何在不更改缩放级别的情况下在集群和非集群之间切换?

    我正在使用Leaflet markercluster插件来聚集我的点 然而 用户要求具有在集群视图和非集群视图之间切换的功能 基本上 他们希望以高缩放比例查看所有点 我知道我可以在特定的缩放级别禁用聚类 markers new L Mark
  • 简单的 OpenGL 纹理贴图不起作用?

    我正在尝试找出 OpenGL 中的纹理映射 但无法找到一个简单的示例来工作 正在绘制多边形 尽管它没有纹理而只是纯色 此外 位图已正确加载到 sprite1 中 因为到目前为止我已成功使用 glDrawPixels 我使用 glGenTex