我正在从加载的高度图数据渲染基于点的地形 - 但这些点会根据摄影机位置的位置更改其纹理.为了演示这个错误(以及这不是因为z缓冲问题而发生的事实)我已经截取了从非常微小的不同摄像机位置(相同的角度)以固定的5像素大小渲染的点的截图,如下所示:
PS:如果将图像拖动到新标签中,图像足够大,没有意识到堆栈会将它们缩小到这么多.
州1:

州2:

生成点的代码相对简单,所以我发布这个只是为了排除选项 - mapArray是一个单维浮点数组并复制到VBO:
for(j = 0; j < mHeight; j++)
{
for(i = 0; i < mWidth; i++)
{
height = bitmapImage[k];
mapArray[k++] = 5 * i;
mapArray[k++] = height;
mapArray[k++] = 5 * j;
}
}
Run Code Online (Sandbox Code Playgroud)
我发现我更有可能需要调整我的片段着色器,因为我对着色器并不是很好 - 虽然我不确定这些简单代码在哪里出错但猜测它可能不适合用途(基于点渲染).贝娄是我的碎片着色器:
in varying vec2 TexCoordA;
uniform sampler2D myTextureSampler;
void main(){
gl_FragColor = texture2D(myTextureSampler, TexCoordA.st) * gl_Color;
}
Run Code Online (Sandbox Code Playgroud)
编辑(请求的信息):OpenGL版本4.4没有使用纹理标志.
TexCoordA直接从我的Vertex着色器传递到着色器,完全没有任何改动.自我计算的紫外线使用这个:
float* UVs = new float[mNumberPoints * 2];
k = 0;
for(j = 0; j < mHeight; …Run Code Online (Sandbox Code Playgroud) 我正在围绕 Express JS 创建一个抽象层,但遇到了问题。考虑以下代码(见底部),当调用 registerRoute 并点击该行时:
expressFnc(route, (req: any, res: any, next: any) => dummy(req, res, next));
Run Code Online (Sandbox Code Playgroud)
我遇到了错误:
无法读取未定义的属性“lazyrouter”
在这种情况下,我认为“this”适用于 ExpressJS (lib/application.js:479:10)。
const express = require("express");
export class ExpressHttpHost implements IHttpHost {
private host: any = express();
private contentResolver?: ContentResolver;
public configure(contentResolver: ContentResolver): void {
this.contentResolver = contentResolver;
}
public registerRoute(
route: string,
verb: HttpVerb,
handler: (request: HttpRequest) => HttpResponse,
): void {
switch (verb) {
case HttpVerb.Get:
this.createDummyRequest(this.host.get, route, handler);
break;
case HttpVerb.Delete:
this.createDummyRequest(this.host.delete, route, handler);
break;
case HttpVerb.Options: …Run Code Online (Sandbox Code Playgroud) 我创建了一个类来从高度图文件中加载Terrain点; 但绘制它们会导致崩溃.我已经将错误缩小到glVertexPointer()函数,该函数返回1281(无效值导致我相信).我已经通过了完整的65k-ish点,似乎无法找到它的问题.在渲染循环中之前发生的唯一其他事情是设置GL_PROJECTION和GL_MODELVIEW以及glClear()(显然是在这个绘制调用之后的交换缓冲区).
class Terrain : public Model
{
public:
Terrain(char* pFile){
if(!LoadTerrain(pFile))
{
OutputDebugString("Loading terain failed.\n");
}
};
~Terrain(){};
void Draw()
{
glPushMatrix();
//glEnableClientState(GL_VERTEX_ARRAY); // Depreciated? Causes crash
glBindBuffer(GL_ARRAY_BUFFER, mVBO);
glVertexPointer(mNumberPoints, GL_FLOAT, 0, (GLvoid*)((char*)NULL));
GLenum a = glGetError(); // 1281
glPointSize(5.0f);
glDrawArrays(GL_POINTS, 0, mNumberPoints);
glBindBuffer(GL_ARRAY_BUFFER, 0);
//glDisableClientState(GL_VERTEX_ARRAY);
glPopMatrix();
}
private:
GLuint mVBO;
int mWidth;
int mHeight;
int mNumberPoints;
bool LoadTerrain(char* pFile)
{
FILE* filePtr;
int error;
unsigned int count;
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
int imageSize, i, j, k, index;
unsigned …Run Code Online (Sandbox Code Playgroud) 我的系统配置如下:SDL2,Fedora 21,Nvidia GTX驱动程序.
[mhoggan@localhost build]$ glxinfo | grep version
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 4.4.0 NVIDIA 346.47
OpenGL core profile shading language version string: 4.40 NVIDIA via Cg compiler
OpenGL version string: 4.5.0 NVIDIA 346.47
OpenGL shading language version string: 4.50 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.1 NVIDIA 346.47
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,
[mhoggan@localhost …Run Code Online (Sandbox Code Playgroud)