- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经将纹理的 ID 加载到 tex
中变量,但是当我在绘制 QUAD 之前将纹理与此 ID 绑定(bind)时(在 renderScene
函数内的代码中看到,被 xxxxxxxxx...
注释包围),没有纹理应用于 QUAD;它保持无色。也没有错误消息。
我已经在我的程序中包含了所有与纹理相关的内容。
我还需要添加/更改什么?
#include<windows.h>
#include <GL/glut.h>
#include<iostream>
#include <stdlib.h>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
// (...)
GLuint loadBMP_custom(const char * imagepath);
GLuint tex = loadBMP_custom("texture.bmp");
GLuint loadBMP_custom( const char * imagepath )
{
GLuint texture;
int width, height;
unsigned char * data;
FILE * file;
file = fopen( imagepath, "rb" );
if ( file == NULL ) return 0;
width = 256;
height = 256;
data = (unsigned char *)malloc( width * height * 3 );
fread( data, width * height * 3, 1, file );
fclose( file );
for(int i = 0; i < width * height ; ++i)
{
int index = i*3;
unsigned char B,R;
B = data[index];
R = data[index+2];
data[index] = R;
data[index+2] = B;
}
glGenTextures( 1, &texture );
glBindTexture( GL_TEXTURE_2D, texture );
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_REPEAT );
gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height,GL_RGB, GL_UNSIGNED_BYTE, data );
free( data );
return texture;
}
// (...)
void renderScene(void)
{
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Reset transformations
glLoadIdentity();
// Set the camera
gluLookAt( posX, 1.0f, posZ,
posX+vlx, posY+vly, posZ+vlz,
0.0f, 1.0f, 0.0f);
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_QUADS);
glTexCoord2f (0.0, 0.0);
glVertex3f(-100.0f, -0.02f, -100.0f);
glTexCoord2f (0.0, 1.0);
glVertex3f(-100.0f, -0.02f, 100.0f);
glTexCoord2f (1.0, 1.0);
glVertex3f( 100.0f, -0.02f, 100.0f);
glTexCoord2f (1.0, 0.0);
glVertex3f( 100.0f, -0.02f, -100.0f);
glEnd();
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// [Also display 3D blocks in space besides the above QUAD, which serves as ground]
glFlush();
glutSwapBuffers();
}
//(...)
int main(int argc, char **argv)
{
// (...)
glEnable (GL_TEXTURE_2D) ;
glutMainLoop();
return 1;
}
最佳答案
如评论中所述,您加载 BMP 文件的方法不正确:即使您知道图像有多大(256x256),您仍然需要跳到像素数据部分(通常为 54 字节,这是 header 的通常大小)。
现在您可以通过阅读此处的官方规范来编写自己的导入程序:https://en.wikipedia.org/wiki/BMP_file_format
...或者也可以在网络上找到许多实现,例如这个问题中提到的那个:C++: Read bitmap wrong
除非您找到一些易于插入的仅 header 库,否则我个人反对使用库来专门处理 BMP 文件,因为它会引入额外的依赖项,以便您自己轻松滚动(并且同时,学习如何实现一个简单的文件加载器)。
关于c++ - 加载的 2D 纹理未将自身绑定(bind)到 QUAD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665992/
我无法理解 .quad函数在汇编中起作用。 从我在线阅读的内容来看,它为当前部分中的每个表达式生成一个 64 位二进制补码值。我明白什么是二进制补码以及该部分引用的行 .quad被称为。 何时何地 .
我是 python 的新手,正在尝试对函数进行数值积分。一切似乎都有效,但我得到的结果与我在 Mathematica 中得到的结果有很大不同(我知道这是正确的)。有人可以帮我弄清楚发生了什么吗? 代码
我有一个高度和宽度,我正在尝试用它们生成一个四边形。当我这样做时: vector vertices; vector indices; Point2D topLeft = Point2(0, heigh
我想要一个矩形立方体。一堵墙的脸朝反面所以我看不到粉红色。这是立方体好的一面: 在立方体的背面,墙的背面是灰色的: 这是代码: glBegin(GL_QUADS); //floor g
我正在尝试编写一些代码,将纹理渲染到一个简单的正方形上,但在让它工作时遇到了很多麻烦。我下载了一些用于纹理映射的示例源代码 here并编译它,它似乎可以很好地将纹理映射到他们的圆柱体上。然后,我添加了
Matlab 中似乎有一个错误 quad使用求积公式计算积分的函数。运行 quad(@(x) (2/sqrt(2*pi))*(x.^2).*exp(-x.^2/2), 0, 10) 回馈 1.0000
我目前正在使用Freebase转储进行项目开发,我将断言插入每个有序的LevelDB中。我的目标是能够给定名称,例如Bob Dylan,以检索与其名称链接的所有类型。 例如,“鲍勃·迪伦”对应于“音乐
import math from scipy.integrate import quad def integrand(x): return 1/math.log(x) for i in ran
我正在尝试使用 Jena 读取 N-Quads 文件,但我得到的只是一个空模型。我试图读取的文件取自 N-Quads documentation 中的示例: .(我将其保存为名为 file.n
我正在尝试使用 Jena 读取 N-Quads 文件,但我得到的只是一个空模型。我试图读取的文件取自 N-Quads documentation 中的示例: .(我将其保存为名为 file.n
我刚开始学习 OpenGL,遇到了一个有趣的错误(这可能是我的不当行为造成的) 但是,我似乎无法弄清楚为什么我的脸在默认情况下被绘制在两侧,而不是一个。下面是一些描述问题的截图 当我继续启用 GL_C
这是有问题的代码: glColor3f(1,1,1); for(int x=0;x 最佳答案 你只有三个 glVertex2f 调用,而你应该有四个(在 GL_QUADS 内)。你有四个 glTexC
你好,我在 C++ 中使用 glut 和 opengl,我有家,我想在其中绘制蓝色 QUADS 我的问题是,当我将 QUADS 绘制为蓝色时,我的所有感觉颜色都是蓝色的,所以我如何才能仅将 QUADS
我正在使用 visual c++ 2012 和 opengl,但无法绘制四边形,我没有遇到任何错误。是因为我没有更新方法吗?这是我的代码: #define WIN32_LEAN_AND_MEAN #i
我已经使用 OpenTK 和 OpenGL 为游戏设置了一个快速的 2D 渲染系统。我已经使用以下方法设置了透明度: GL.Enable(EnableCaps.Blend); GL.BlendFunc
我有一个随机数量的顶点列表,我想获得 2 个四边形三角形的索引。每四个顶点应构成 2 个三角形。例如: 0,1,2, 0,2,3, 4,5,6, 4,6,7, 8,9,10, 8,10,11 我确
题目地址:https://leetcode.com/problems/construct-quad-tree/description/ 题目描述 Wewant to use quad trees
我以 N-Quads、.nq 文件的形式从 Nature 下载了一堆数据。这些包含 RDF 图,对吗?如何访问这些数据,以及如何将 RDF 图形转换为更可用的格式(最好是 R/C++/Python 的
我有一个线框着色器,可以在左侧立方体上显示三角形,并希望对其进行更新,使其仅显示四边形,例如在右侧立方体上。 这是代码: Shader "Custom/Wireframe" { Propert
我正在 PyOpenGL 中制作一个游戏,其中一个对象(例如长方体)应该面向相机。为此,我必须旋转特定对象。我怎样才能做到这一点? glRotatef() 旋转整个世界,但不是单个对象,所以我不能使用
我是一名优秀的程序员,十分优秀!