小编Tho*_* An的帖子

读取与 JavaScript 文件相同目录中的文件

我可以加载位于与 JavaScript 文件相同的相对路径中的图像文件

var imgObj = new Image(); 
imgObj.src = "images/backdropLevel0.jpg";
Run Code Online (Sandbox Code Playgroud)

但是我如何对文本文件做同样的事情(就像简单的和纯 JavaScript 一样)?
(它有一些我正在开发的 webGL 游戏的初始数据)。

附注。我不是在使用新的 File 对象询问来自客户端计算机的用户输入。

javascript file

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

(OpenGL)如何读回纹理缓冲区?

glGetBufferSubData是用于常规缓冲区还是纹理缓冲区?我试图解决为什么我的纹理没有出现,当我使用glGetBufferSubData读取缓冲区时,我得到了一些垃圾

struct TypeGLtexture //Associate texture data with a GL buffer
{
    TypeGLbufferID GLbuffer;
    TypeImageFile  ImageFile;

    void GenerateGLbuffer   ()
    {
        if (GLbuffer.isActive==true || ImageFile.GetPixelArray().size()==0) return;
        GLbuffer.isActive=true;
        GLbuffer.isTexture=true;
        GLbuffer.Name="Texture Buffer";
        GLbuffer.ElementCount=ImageFile.GetPixelArray().size();

        glEnable(GL_TEXTURE_2D);
        glGenTextures (1,&GLbuffer.ID);              //instantiate ONE buffer object and return its handle/ID
        glBindTexture (GL_TEXTURE_2D,GLbuffer.ID);   //connect the object to the GL_TEXTURE_2D docking point
        glTexImage2D (GL_TEXTURE_2D,0,GL_RGB,ImageFile.GetProperties().width, ImageFile.GetProperties().height,0,GL_RGB,GL_UNSIGNED_BYTE,&(ImageFile.GetPixelArray()[0]));

if(ImageFile.GetProperties().width==6){
    cout<<"Actual Data"<<endl;
    for (unsigned i=0;i<GLbuffer.ElementCount;i++) cout<<(int)ImageFile.GetPixelArray()[i]<<" ";
    cout<<endl<<endl;

    cout<<"Buffer data"<<endl;
    GLubyte read[GLbuffer.ElementCount]; //Read back from the buffer (to make sure)
    glGetBufferSubData(GL_TEXTURE_2D,0,GLbuffer.ElementCount,read);
    for (unsigned i=0;i<GLbuffer.ElementCount;i++) cout<<(int)read[i]<<" "; …
Run Code Online (Sandbox Code Playgroud)

opengl textures

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

我可以设置openGL缓冲区来处理与OBJ文件类似的原理吗?

假设我有以下数组(每个数组都有任意长度)并将它们用作备件箱; 将它们中的每一个放入缓冲区,然后让openGL读取elements数组中的索引,并通过从每个数组块中挑选来构造顶点.

我们可以使用
{coordinate v1,normal vn3,color c1,texCoord vt4 } 构造一个顶点

或者我们可以再次使用
{coordinate v1,再次使用普通vn3,使用颜色c3,texCoord vt2 } 构建另一个顶点

请注意,"坐标数组"还不是顶点,它只提供构造顶点的位置.

在使用缓冲区和着色器的现代openGl中,对于初学者来说,这样的事情会非常困难吗?

CoordinatesArray:
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000

NormalsArray:
vn 0.000000 0.000000 -1.000000
vn -1.000000 -0.000000 -0.000000
vn -0.000000 -0.000000 1.000000
vn -0.000001 0.000000 1.000000
vn 1.000000 …

c++ opengl

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

如何返回null终止const char*的向量?

我试图逐行读取文件.将每一行转换为以空字符结尾的字符串.将所有行推入向量并返回.

vector<const char*> TypeGLscene::LoadGLshader (string ThisFile)
{
ifstream fromFile;
fromFile.open(ThisFile);
if (fromFile.good()==false)
{
    cout<<"Could not find file: "<<ThisFile<<endl;
    exit(1);
}

vector<const char*>  FileContents;
const char*    OneLine;
string         LineStr;

while (fromFile.good()==true)
{
    getline(fromFile,LineStr);
    OneLine = LineStr.c_str();
    FileContents.push_back(OneLine);
}

fromFile.close();
return FileContents;
Run Code Online (Sandbox Code Playgroud)

问题是所有char字符串都是在堆栈中创建的,函数返回char*的向量.

我试图通过以下方式在堆上分配内存:

OneLine = new char[LineStr.size()+1];
Run Code Online (Sandbox Code Playgroud)

但我被卡住了,因为一旦分配,我就无法复制任何内容; 内容是const.

我怎么能在const char*上使用new关键字并在它实现它是const之前同时向它添加内容?

(更不用说我必须一个一个地删除它们,另一方面......真是一团糟)

编辑:我宁愿返回一个向量,但这一切都是因为我不知道快速(一行)方式将向量转换为const char**:

void glShaderSource(GLuint shader,
                    GLsizei count,
                    const GLchar **string,
                    const GLint *length);
Run Code Online (Sandbox Code Playgroud)

c++ pointers const

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

标签 统计

c++ ×2

opengl ×2

const ×1

file ×1

javascript ×1

pointers ×1

textures ×1