小编Mor*_*bel的帖子

纹理与GLSL中的texture2D

当在GLSL(a uniform sampler2D)中对2D纹理进行采样时,使用该texture函数并且从采样器推断尺寸(在这种情况下为2D).这是从1.30开始在GLSL中采样纹理的现代方法(GLSL参考页).但是,您也可以使用该texture2D功能.

texture2D函数是否已弃用,如果是这样,是否会texture2D在某些版本的GLSL中删除(或已删除)该函数的支持?

opengl glsl

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

与Emscripten中的C++类交互

Emscripten教程给出了如何与C函数交互的一个很好的解释:https://github.com/kripken/emscripten/wiki/Interacting-with-code

但是你如何与C++类交互:

  • 调用构造函数来创建对象
  • 删除obj
  • 防止类代码及其方法的死代码消除

emscripten

14
推荐指数
2
解决办法
5949
查看次数

OS X上的GLUT与OpenGL 3.2核心配置文件

是否可以使用核心配置文件在OS X Lion或OS X Mountain Lion上使用GLUT(因此我可以使用GLSL 1.50)?

我可以使用内置的GLUT还是需要使用FreeGLUT等第三方库?

OS X是否有任何简单的"Hello world"应用程序可以使用XCode项目或make-file?

opengl macos glut glsl osx-mountain-lion

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

为iOS创建Qt 5.1应用程序

新的Qt 5.1对发布公告中提到的iOS(部分)支持,但我如何实际构建和部署Qt项目到iOS设备?或者换句话说,我如何最终得到iOS XCode项目?

c++ xcode qt ios qt5

8
推荐指数
1
解决办法
2万
查看次数

是否有用于检测C++ 11标准库的预处理器指令?

是否可以使用预处理器指令确定C++标准库是否支持C++ 11?

我目前正在开发一个使用C++ 11语言方言的项目,但是使用没有C++ 11支持的C++标准库(我需要它能够与非C++ 11库链接).

我知道我可以使用它测试C++ 11支持#if __cplusplus >= 201103L,但在我的情况下,这将评估为true.我需要了解C++ 11的C++标准库支持.

c++ c-preprocessor c++11 libc++

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

在IndexedDB中保存ArrayBuffer

如何将二进制数据(在ArrayBuffer对象中)保存到IndexedDB中?

IndexedDB规范没有提到ArrayBuffer - 这是否意味着不支持(我必须将ArrayBuffer打包为字符串或数组?).

firefox html5 google-chrome arraybuffer indexeddb

5
推荐指数
2
解决办法
5010
查看次数

将字符串写入 ostream

当我尝试编译下面的代码时(在 Qt 4.8 中使用 llvm-g++-4.2 (GCC) 4.2.1),我收到以下错误:

../GLWidget.cpp:24:   instantiated from here
../GLWidget.cpp:24: error: explicit instantiation of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' but no definition available 
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思,我应该怎么做才能修复它?

源代码:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void testOStream(){
    filebuf fb;
    fb.open ("test.txt",ios::out);
    std::ostream os(&fb);
    std::string test("test");
    os << test; // This line has the problem
    fb.close();
}
Run Code Online (Sandbox Code Playgroud)

c++ gcc

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

有效地计算体素数据的梯度

计算固定大小的体素数据的梯度的最有效方法是什么,例如下面的源代码.请注意,我需要在空间的任何位置使用渐变.渐变将用于估计行进立方体实现中的法线.

#import <array>

struct VoxelData {
    VoxelData(float* data, unsigned int xDim, unsigned int yDim, unsigned int zDim)
    :data(data), xDim(xDim), yDim(yDim), zDim(zDim)
    {}

    std::array<float,3> get_gradient(float x, float y, float z){
        std::array<float,3> res;
        // compute gradient efficiently
        return res;
    }

    float get_density(int x, int y, int z){
        if (x<0 || y<0 || z<0 || x >= xDim || y >= yDim || z >= zDim){
            return 0;
        }
        return data[get_element_index(x, y, z)];
    }

    int get_element_index(int x, int y, int z){
        return x …
Run Code Online (Sandbox Code Playgroud)

c++ raytracing voxel marching-cubes

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

链接后WebGL分离和删除着色器

在OpenGL中,建议在链接程序后分离和删除着色器(正确的方法是删除GLSL着色器?).

但是当我在WebGL中执行此操作时,似乎Safari和Firefox都存在问题(而Chrome的行为与预期一致).分离和删除着色器在WebGL中的工作方式是否不同,还是只是不符合标准的浏览器实现?

使用此功能时会出现问题:

function setupShader(){
    var vertexShaderSrc = document.getElementById('vertexShader').textContent;
    var fragmentShaderSrc = document.getElementById('fragmentShader').textContent;
    var vertexShader = gl.createShader(gl.VERTEX_SHADER);
    gl.shaderSource(vertexShader, vertexShaderSrc);
gl.compileShader(vertexShader);
    if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {
        alert(gl.getShaderInfoLog(vertexShader));
    }
    var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
    gl.shaderSource(fragmentShader, fragmentShaderSrc);
    gl.compileShader(fragmentShader);
    if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {
        alert(gl.getShaderInfoLog(fragmentShader));
    }
    shaderProgram = gl.createProgram();
    gl.attachShader(shaderProgram, vertexShader);
    gl.attachShader(shaderProgram, fragmentShader);
    gl.linkProgram(shaderProgram);

    if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
        alert("Could not initialise shaders");
    }
    gl.useProgram(shaderProgram);
    gl.detachShader(shaderProgram, vertexShader);
    gl.detachShader(shaderProgram, fragmentShader);
    gl.deleteShader(vertexShader);
    gl.deleteShader(fragmentShader);    
}
Run Code Online (Sandbox Code Playgroud)

可以在此处找到完整的示例:http: //jsfiddle.net/mortennobel/vdgtg3fy/1/

编辑:更多细节:我正在运行OS/X Yosemite.Safari 8.0,Chrome 39,Firefox 33.1.事实证明,如果我调用gl.getUniformLocation(xxx)并在分离和删除着色器之前存储结果,那么一切正常.我知道这可能是一件好事 - 但我仍然很好奇这是否是我必须做的事情 - 或者它是一个浏览器错误.

webgl

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

Javascript:for-loop中定义的每个事件处理程序都是相同的,使用最后一次迭代的值

我无法理解Javascript中的范围规则.

在下面的示例中,我假设范围url变量在for循环中是私有的.并且onload-event函数会看到这个私有实例.

但事情看起来并不像那样 - 警报将弹出最后一个网址两次.

如果有人能澄清发生了什么,我将不胜感激.

<html>
<head>
</head>
<body>
<script type="text/javascript">
    var testArray = ["http://g0.gstatic.com/images/icons/onebox/weather_rain-40.png", "http://g0.gstatic.com/images/icons/onebox/weather_scatteredshowers-40.png"];
    for (var i=0;i<testArray.length;i++){
        var img = new Image();
        var url = testArray[i];
        img.onload = function(){
            alert(url);
        }
        img.src = url;
    }
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript scope

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