标签: texture-mapping

使用Cubemaps纹理球体(不是反射贴图)

我想用立方体贴图来纹理球体.到目前为止,我的研究已经在Google上引发了许多结果,涉及使OpenGL自动生成纹理坐标,但我想生成自己的坐标.

给定一个坐标数组,包括以0,0,0为中心的不完美球体(高度映射但基本上是球体)的顶点,如何为立方体贴图生成纹理坐标?

c++ opengl texture-mapping

1
推荐指数
1
解决办法
1938
查看次数

OpenGL纹理映射顽固地拒绝工作

我正在使用D编程语言中的SDL和OpenGL编写2D游戏.目前它只是尝试将纹理映射的四边形渲染到屏幕上.问题是,整个纹理映射部分似乎不太起作用.尽管纹理明显加载很好(被赋予非零纹理数,但不会导致glGetError返回零以外的值),但是使用glColor中的最后一个颜色集渲染四边形,完全忽略纹理.

我找到了纹理映射失败的常见原因,包括这个问题,无济于事.正在加载的图像文件是64x64,有效的2次幂大小.

请不要害怕因为这是D-it几乎完全是C风格的SDL和OpenGL调用.

SDL初始化代码:

if (SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) == -1 ||
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0) == -1)
    throw new Exception("An OpenGL attribute could not be set!");

uint videoFlags = SDL_OPENGL | SDL_HWSURFACE | SDL_ANYFORMAT;

if (threadsPerCPU() > 1)
    videoFlags |= SDL_ASYNCBLIT;

SDL_Surface* screen = SDL_SetVideoMode(800, 600, 32, videoFlags);

if (screen == null)
    throw new Exception("SDL_SetVideoMode failed!");
Run Code Online (Sandbox Code Playgroud)

OpenGL初始化代码:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0., 800, 600, 0., 0., 1.);
glMatrixMode(GL_MODELVIEW);

glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnable(GL_TEXTURE_2D);

glClearColor(0.f, 0.f, 0.f, 0.f);
Run Code Online (Sandbox Code Playgroud)

纹理加载代码:

SDL_Surface* s = IMG_Load(toStringz("hello.png")); …
Run Code Online (Sandbox Code Playgroud)

opengl graphics sdl d texture-mapping

1
推荐指数
1
解决办法
1529
查看次数

在 OpenGL 中绘制带有颜色的多边形会导致纹理颜色发生变化

我正在开发一个模拟程序,该程序在一个大的 2D 矩形的顶部绘制点和其他图元,并在其上映射纹理。

问题是,当我绘制多边形并使用 glColor3f 为顶点指定颜色时,该颜色似乎会影响纹理的颜色,而不仅仅是我绘制的多边形。因此,绘制红色多边形似乎会“渗入”整个纹理,并且所有内容都呈红色。

我试图在绘制多边形之前使用 glDisable(GL_TEXTURE_2D) 来解决这个问题,然后再次启用。但这似乎没有任何影响。

opengl texture-mapping

1
推荐指数
1
解决办法
3534
查看次数

OpenGL中的OpenCV图像:奇怪的行为

我正在使用以下代码从IplImage创建和显示纹理.它工作大约一半的时间,但有时会扭曲图像,我认为它与纹理填充有关,但我需要帮助修复.

int loadTexture_Ipl(IplImage *image, GLuint *text) {
    if (image==NULL) return -1;
    glGenTextures(1, text);
    glBindTexture( GL_TEXTURE_2D, *text );
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height,0, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此链接是输出的屏幕截图,任何人都有类似的问题.

歪斜的问题

c++ opengl opencv iplimage texture-mapping

1
推荐指数
1
解决办法
1141
查看次数

Android OpenGLES 2.0纹理映射不起作用

我正在尝试纹理贴图一些四边形.我可以用纯色渲染四边形.我一直在关注这个页面:http: //www.learnopengles.com/android-lesson-four-introducing-basic-texturing/

一切都编译并运行,但纹理根本没有被应用.我的代码和链接页面之间的唯一区别是我不做glBindAttribLocation,而是使用glDrawElements而不是glDrawArrays.

编辑:转换我的顶点和tex coord数据使用glDrawArrays没有修复任何东西.

我的所有着色器手柄似乎都是正确的.问题必须出在我的一个平局中.如果有人可以帮我调试这个,那就太好了.我已经尝试设置gl_FragColor = vec4(texCoord [0],texCoord [1],1.0f,1.0f)只是为了查看tex坐标是否正在进入着色器但是崩溃了.

顶点数据的初始化:

static float squareCoords[] = { -0.5f,  0.5f, 0.0f,   // top left
                                -0.5f, -0.5f, 0.0f,   // bottom left
                                 0.5f, -0.5f, 0.0f,   // bottom right
                                 0.5f,  0.5f, 0.0f }; // top right
static float textureCoords[] = { 0.0f, 1.0f,  // top left
                                 0.0f, 0.0f,  // bottom left
                                 1.0f, 0.0f,  // bottom right
                                 1.0f, 1.0f}; // top right


    // initialize vertex byte buffer for shape coordinates
    ByteBuffer bb = ByteBuffer.allocateDirect(squareCoords.length …
Run Code Online (Sandbox Code Playgroud)

graphics android texture-mapping opengl-es-2.0

1
推荐指数
1
解决办法
3719
查看次数

即使使用GL_REPEAT,为什么我的纹理也会拉伸?

在此输入图像描述这是我的输出:![在此输入图像描述] [2]

当我的墙很长时,图像被拉伸,当它们很小时,图像被挤压.

我的加载纹理代码,loadTGATexture方法来自superBible.

glGenTextures(1,&texture);  
glBindTexture(GL_TEXTURE_2D,texture);   
LoadTGATexture(textureFile, GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_REPEAT);
Run Code Online (Sandbox Code Playgroud)

我给出纹理坐标的代码片段是:(j是建筑物墙的索引)

    buildingArray[j][0] = n2.x;
    buildingArray[j][3] = 0;
    buildingArray[j][4] = n2.y;

    texBlgArray[j][0] = repeat_after_length;
    texBlgArray[j][5] = 0;

    normals[j][0] = normal.x;
    normals[j][6] = normal.y;
    normals[j][7] = normal.z;

    j++;
Run Code Online (Sandbox Code Playgroud)

我将长度重复设置为1.

我认为,如果长度> 1,纹理GL_REPEAT会发生,我应该将其设置为大于1的某个值,但是如果我这样做,纹理中的窗口变得非常小而且大而不是.窗户是可见的.我想要平铺纹理,我不希望我的纹理纹理图像的尺寸有任何变化:在此输入图像描述

我究竟做错了什么 ?

opengl 3d graphics textures texture-mapping

1
推荐指数
1
解决办法
990
查看次数

正确的UV映射Three.js

我正在尝试正确映射UV纹理,但失败了......

我的应用程序中有下一个结果:

在此输入图像描述

结果并不是我在等待.我想要下一个描述的视图:

在此输入图像描述

源代码在这里:

http://pastebin.com/aDg981Bk

javascript texture-mapping uv-mapping three.js

1
推荐指数
1
解决办法
9227
查看次数

将纹理应用于three.js中的多维数据集内部

我试图在内部的立方体的每个面上应用不同的图像.

我在这里有一个工作示例:http://codepen.io/anon/pen/mymOKe

我加载这样的图像:

var material = [
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
}),
                new THREE.MeshLambertMaterial({
map: THREE.ImageUtils.loadTexture('http://placehold.it/512x512', {}, function(){ webGLRenderer.render(scene, camera); })
})
];

var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, new THREE.MeshFaceMaterial(material));

mesh.doubleSided = true; …
Run Code Online (Sandbox Code Playgroud)

texture-mapping three.js

1
推荐指数
1
解决办法
2994
查看次数

Threejs 纹理贴图 UV 具有独立的 alphamap

我有一个大纹理(一张照片)和一个小的简单网格,它们应该显示主纹理的区域。这些网格应该有一个 alphaMap,例如一个圆。

在网格材质的纹理 (PlaneBufferGeometry) 中,我更改了 UV 映射,以便它将显示主纹理的正确区域。问题是 UV 贴图也应用于 alphaMap,但我希望它独立。

const planeGeometry = new THREE.PlaneBufferGeometry(sz.x, sz.y);
let uvs= planeGeometry.attributes.uv;
for (let ix = 0; ix< uvs.array.length; ix++){
    let x = uvs.getX(ix);
    let y = uvs.getY(ix);
    uvs.setXY(ix, x*.5, y*.75);   // just testing
}

const planeMaterial = new THREE.MeshPhongMaterial({
    map: imageTexture,
    transparent: true,      
    alphaMap ,
    normalMap,
});
Run Code Online (Sandbox Code Playgroud)

有没有办法只改变材质贴图的UV贴图,而让其他贴图(alphaMap和法线贴图)保持独立......或者还有其他方法吗?

texture-mapping three.js

1
推荐指数
1
解决办法
1028
查看次数

使用 matplotlib 将 RBG 图像作为 3D 立方体的纹理

我想使用 matplotlib 绘制 3D 立方体,并将任意 RGB 图像(jpg 或 png)作为纹理映射到立方体的每一侧。这里有一个使用 matlab 的很好的例子。

在此输入图像描述

我只是想知道如何使用 Python/matplotlib 来做到这一点,可能从这个例子开始。

python visualization matplotlib texture-mapping

1
推荐指数
1
解决办法
1857
查看次数