Merge change 22163 into eclair
* changes: Point Sprites
This commit is contained in:
@@ -111,7 +111,8 @@ public class Element extends BaseObj {
|
|||||||
NX (15),
|
NX (15),
|
||||||
NY (16),
|
NY (16),
|
||||||
NZ (17),
|
NZ (17),
|
||||||
INDEX (18);
|
INDEX (18),
|
||||||
|
POINT_SIZE(19);
|
||||||
|
|
||||||
int mID;
|
int mID;
|
||||||
DataKind(int id) {
|
DataKind(int id) {
|
||||||
@@ -248,6 +249,11 @@ public class Element extends BaseObj {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Builder addFloatPointSize() {
|
||||||
|
add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, null);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Builder addFloatRGB() {
|
public Builder addFloatRGB() {
|
||||||
add(DataType.FLOAT, DataKind.RED, false, 32, null);
|
add(DataType.FLOAT, DataKind.RED, false, 32, null);
|
||||||
add(DataType.FLOAT, DataKind.GREEN, false, 32, null);
|
add(DataType.FLOAT, DataKind.GREEN, false, 32, null);
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ public class ProgramFragment extends BaseObj {
|
|||||||
RenderScript mRS;
|
RenderScript mRS;
|
||||||
Element mIn;
|
Element mIn;
|
||||||
Element mOut;
|
Element mOut;
|
||||||
|
boolean mPointSpriteEnable;
|
||||||
|
|
||||||
private class Slot {
|
private class Slot {
|
||||||
Type mType;
|
Type mType;
|
||||||
@@ -85,6 +86,7 @@ public class ProgramFragment extends BaseObj {
|
|||||||
mIn = in;
|
mIn = in;
|
||||||
mOut = out;
|
mOut = out;
|
||||||
mSlots = new Slot[MAX_SLOT];
|
mSlots = new Slot[MAX_SLOT];
|
||||||
|
mPointSpriteEnable = false;
|
||||||
for(int ct=0; ct < MAX_SLOT; ct++) {
|
for(int ct=0; ct < MAX_SLOT; ct++) {
|
||||||
mSlots[ct] = new Slot();
|
mSlots[ct] = new Slot();
|
||||||
}
|
}
|
||||||
@@ -117,6 +119,9 @@ public class ProgramFragment extends BaseObj {
|
|||||||
mSlots[slot].mEnv = env;
|
mSlots[slot].mEnv = env;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPointSpriteTexCoordinateReplacement(boolean enable) {
|
||||||
|
mPointSpriteEnable = enable;
|
||||||
|
}
|
||||||
|
|
||||||
static synchronized ProgramFragment internalCreate(RenderScript rs, Builder b) {
|
static synchronized ProgramFragment internalCreate(RenderScript rs, Builder b) {
|
||||||
int inID = 0;
|
int inID = 0;
|
||||||
@@ -127,20 +132,17 @@ public class ProgramFragment extends BaseObj {
|
|||||||
if (b.mOut != null) {
|
if (b.mOut != null) {
|
||||||
outID = b.mOut.mID;
|
outID = b.mOut.mID;
|
||||||
}
|
}
|
||||||
rs.nProgramFragmentBegin(inID, outID);
|
rs.nProgramFragmentBegin(inID, outID, b.mPointSpriteEnable);
|
||||||
for(int ct=0; ct < MAX_SLOT; ct++) {
|
for(int ct=0; ct < MAX_SLOT; ct++) {
|
||||||
if(b.mSlots[ct].mTexEnable) {
|
if(b.mSlots[ct].mTexEnable) {
|
||||||
Slot s = b.mSlots[ct];
|
Slot s = b.mSlots[ct];
|
||||||
|
int typeID = 0;
|
||||||
if(s.mType != null) {
|
if(s.mType != null) {
|
||||||
rs.nProgramFragmentSetType(ct, s.mType.mID);
|
typeID = s.mType.mID;
|
||||||
}
|
}
|
||||||
rs.nProgramFragmentSetTexEnable(ct, true);
|
rs.nProgramFragmentSetSlot(ct, true, s.mEnv.mID, typeID);
|
||||||
if(s.mEnv != null) {
|
|
||||||
rs.nProgramFragmentSetEnvMode(ct, s.mEnv.mID);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int id = rs.nProgramFragmentCreate();
|
int id = rs.nProgramFragmentCreate();
|
||||||
return new ProgramFragment(id, rs);
|
return new ProgramFragment(id, rs);
|
||||||
|
|||||||
@@ -158,12 +158,10 @@ public class RenderScript {
|
|||||||
native void nProgramFragmentStoreDither(boolean enable);
|
native void nProgramFragmentStoreDither(boolean enable);
|
||||||
native int nProgramFragmentStoreCreate();
|
native int nProgramFragmentStoreCreate();
|
||||||
|
|
||||||
native void nProgramFragmentBegin(int in, int out);
|
native void nProgramFragmentBegin(int in, int out, boolean pointSpriteEnable);
|
||||||
native void nProgramFragmentBindTexture(int vpf, int slot, int a);
|
native void nProgramFragmentBindTexture(int vpf, int slot, int a);
|
||||||
native void nProgramFragmentBindSampler(int vpf, int slot, int s);
|
native void nProgramFragmentBindSampler(int vpf, int slot, int s);
|
||||||
native void nProgramFragmentSetType(int slot, int vt);
|
native void nProgramFragmentSetSlot(int slot, boolean enable, int env, int vt);
|
||||||
native void nProgramFragmentSetEnvMode(int slot, int env);
|
|
||||||
native void nProgramFragmentSetTexEnable(int slot, boolean enable);
|
|
||||||
native int nProgramFragmentCreate();
|
native int nProgramFragmentCreate();
|
||||||
|
|
||||||
native void nProgramVertexBindAllocation(int pv, int mID);
|
native void nProgramVertexBindAllocation(int pv, int mID);
|
||||||
|
|||||||
@@ -952,11 +952,11 @@ nProgramFragmentStoreCreate(JNIEnv *_env, jobject _this)
|
|||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out)
|
nProgramFragmentBegin(JNIEnv *_env, jobject _this, jint in, jint out, jboolean pointSpriteEnable)
|
||||||
{
|
{
|
||||||
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
|
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
|
||||||
LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p)", con, (RsElement)in, (RsElement)out);
|
LOG_API("nProgramFragmentBegin, con(%p), in(%p), out(%p) PointSprite(%i)", con, (RsElement)in, (RsElement)out, pointSpriteEnable);
|
||||||
rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out);
|
rsProgramFragmentBegin(con, (RsElement)in, (RsElement)out, pointSpriteEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -976,27 +976,11 @@ nProgramFragmentBindSampler(JNIEnv *_env, jobject _this, jint vpf, jint slot, ji
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nProgramFragmentSetType(JNIEnv *_env, jobject _this, jint slot, jint vt)
|
nProgramFragmentSetSlot(JNIEnv *_env, jobject _this, jint slot, jboolean enable, jint env, jint vt)
|
||||||
{
|
{
|
||||||
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
|
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
|
||||||
LOG_API("nProgramFragmentSetType, con(%p), slot(%i), vt(%p)", con, slot, (RsType)vt);
|
LOG_API("nProgramFragmentSetType, con(%p), slot(%i), enable(%i), env(%i), vt(%p)", con, slot, enable, env, (RsType)vt);
|
||||||
rsProgramFragmentSetType(con, slot, (RsType)vt);
|
rsProgramFragmentSetSlot(con, slot, enable, (RsTexEnvMode)env, (RsType)vt);
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
nProgramFragmentSetEnvMode(JNIEnv *_env, jobject _this, jint slot, jint env)
|
|
||||||
{
|
|
||||||
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
|
|
||||||
LOG_API("nProgramFragmentSetEnvMode, con(%p), slot(%i), vt(%i)", con, slot, env);
|
|
||||||
rsProgramFragmentSetEnvMode(con, slot, (RsTexEnvMode)env);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
nProgramFragmentSetTexEnable(JNIEnv *_env, jobject _this, jint slot, jboolean enable)
|
|
||||||
{
|
|
||||||
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
|
|
||||||
LOG_API("nProgramFragmentSetTexEnable, con(%p), slot(%i), enable(%i)", con, slot, enable);
|
|
||||||
rsProgramFragmentSetTexEnable(con, slot, enable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static jint
|
static jint
|
||||||
@@ -1305,12 +1289,10 @@ static JNINativeMethod methods[] = {
|
|||||||
{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither },
|
{"nProgramFragmentStoreDither", "(Z)V", (void*)nProgramFragmentStoreDither },
|
||||||
{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate },
|
{"nProgramFragmentStoreCreate", "()I", (void*)nProgramFragmentStoreCreate },
|
||||||
|
|
||||||
{"nProgramFragmentBegin", "(II)V", (void*)nProgramFragmentBegin },
|
{"nProgramFragmentBegin", "(IIZ)V", (void*)nProgramFragmentBegin },
|
||||||
{"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture },
|
{"nProgramFragmentBindTexture", "(III)V", (void*)nProgramFragmentBindTexture },
|
||||||
{"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler },
|
{"nProgramFragmentBindSampler", "(III)V", (void*)nProgramFragmentBindSampler },
|
||||||
{"nProgramFragmentSetType", "(II)V", (void*)nProgramFragmentSetType },
|
{"nProgramFragmentSetSlot", "(IZII)V", (void*)nProgramFragmentSetSlot },
|
||||||
{"nProgramFragmentSetEnvMode", "(II)V", (void*)nProgramFragmentSetEnvMode },
|
|
||||||
{"nProgramFragmentSetTexEnable", "(IZ)V", (void*)nProgramFragmentSetTexEnable },
|
|
||||||
{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate },
|
{"nProgramFragmentCreate", "()I", (void*)nProgramFragmentCreate },
|
||||||
|
|
||||||
{"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation },
|
{"nProgramVertexBindAllocation", "(II)V", (void*)nProgramVertexBindAllocation },
|
||||||
|
|||||||
@@ -80,7 +80,8 @@ enum RsDataKind {
|
|||||||
RS_KIND_NX,
|
RS_KIND_NX,
|
||||||
RS_KIND_NY,
|
RS_KIND_NY,
|
||||||
RS_KIND_NZ,
|
RS_KIND_NZ,
|
||||||
RS_KIND_INDEX
|
RS_KIND_INDEX,
|
||||||
|
RS_KIND_POINT_SIZE
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RsElementPredefined {
|
enum RsElementPredefined {
|
||||||
|
|||||||
@@ -361,6 +361,7 @@ ProgramFragmentStoreCreate {
|
|||||||
ProgramFragmentBegin {
|
ProgramFragmentBegin {
|
||||||
param RsElement in
|
param RsElement in
|
||||||
param RsElement out
|
param RsElement out
|
||||||
|
param bool pointSpriteEnable
|
||||||
}
|
}
|
||||||
|
|
||||||
ProgramFragmentBindTexture {
|
ProgramFragmentBindTexture {
|
||||||
@@ -375,19 +376,11 @@ ProgramFragmentBindSampler {
|
|||||||
param RsSampler s
|
param RsSampler s
|
||||||
}
|
}
|
||||||
|
|
||||||
ProgramFragmentSetType {
|
ProgramFragmentSetSlot {
|
||||||
param uint32_t slot
|
|
||||||
param RsType t
|
|
||||||
}
|
|
||||||
|
|
||||||
ProgramFragmentSetEnvMode {
|
|
||||||
param uint32_t slot
|
|
||||||
param RsTexEnvMode env
|
|
||||||
}
|
|
||||||
|
|
||||||
ProgramFragmentSetTexEnable {
|
|
||||||
param uint32_t slot
|
param uint32_t slot
|
||||||
param bool enable
|
param bool enable
|
||||||
|
param RsTexEnvMode env
|
||||||
|
param RsType t
|
||||||
}
|
}
|
||||||
|
|
||||||
ProgramFragmentCreate {
|
ProgramFragmentCreate {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ using namespace android::renderscript;
|
|||||||
Component::Component()
|
Component::Component()
|
||||||
{
|
{
|
||||||
mType = FLOAT;
|
mType = FLOAT;
|
||||||
mKind = NONE;
|
mKind = USER;
|
||||||
mIsNormalized = false;
|
mIsNormalized = false;
|
||||||
mBits = 0;
|
mBits = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,13 +34,13 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum DataKind {
|
enum DataKind {
|
||||||
NONE,
|
USER,
|
||||||
RED, GREEN, BLUE, ALPHA, LUMINANCE, INTENSITY,
|
RED, GREEN, BLUE, ALPHA, LUMINANCE, INTENSITY,
|
||||||
X, Y, Z, W,
|
X, Y, Z, W,
|
||||||
S, T, Q, R,
|
S, T, Q, R,
|
||||||
NX, NY, NZ,
|
NX, NY, NZ,
|
||||||
INDEX,
|
INDEX,
|
||||||
USER
|
POINT_SIZE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ using namespace android;
|
|||||||
using namespace android::renderscript;
|
using namespace android::renderscript;
|
||||||
|
|
||||||
|
|
||||||
ProgramFragment::ProgramFragment(Element *in, Element *out) :
|
ProgramFragment::ProgramFragment(Element *in, Element *out, bool pointSpriteEnable) :
|
||||||
Program(in, out)
|
Program(in, out)
|
||||||
{
|
{
|
||||||
for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) {
|
for (uint32_t ct=0; ct < MAX_TEXTURE; ct++) {
|
||||||
@@ -32,6 +32,7 @@ ProgramFragment::ProgramFragment(Element *in, Element *out) :
|
|||||||
mTextureDimensions[ct] = 2;
|
mTextureDimensions[ct] = 2;
|
||||||
}
|
}
|
||||||
mTextureEnableMask = 0;
|
mTextureEnableMask = 0;
|
||||||
|
mPointSpriteEnable = pointSpriteEnable;
|
||||||
mEnvModes[1] = RS_TEX_ENV_MODE_DECAL;
|
mEnvModes[1] = RS_TEX_ENV_MODE_DECAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,6 +55,7 @@ void ProgramFragment::setupGL(ProgramFragmentState *state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
//glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, mPointSpriteEnable);
|
||||||
glBindTexture(GL_TEXTURE_2D, mTextures[ct]->getTextureID());
|
glBindTexture(GL_TEXTURE_2D, mTextures[ct]->getTextureID());
|
||||||
|
|
||||||
switch(mEnvModes[ct]) {
|
switch(mEnvModes[ct]) {
|
||||||
@@ -94,7 +96,6 @@ void ProgramFragment::setupGL(ProgramFragmentState *state)
|
|||||||
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA);
|
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
mDirty = false;
|
mDirty = false;
|
||||||
}
|
}
|
||||||
@@ -178,7 +179,7 @@ ProgramFragmentState::~ProgramFragmentState()
|
|||||||
|
|
||||||
void ProgramFragmentState::init(Context *rsc, int32_t w, int32_t h)
|
void ProgramFragmentState::init(Context *rsc, int32_t w, int32_t h)
|
||||||
{
|
{
|
||||||
ProgramFragment *pf = new ProgramFragment(NULL, NULL);
|
ProgramFragment *pf = new ProgramFragment(NULL, NULL, false);
|
||||||
mDefault.set(pf);
|
mDefault.set(pf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,10 +187,10 @@ void ProgramFragmentState::init(Context *rsc, int32_t w, int32_t h)
|
|||||||
namespace android {
|
namespace android {
|
||||||
namespace renderscript {
|
namespace renderscript {
|
||||||
|
|
||||||
void rsi_ProgramFragmentBegin(Context * rsc, RsElement in, RsElement out)
|
void rsi_ProgramFragmentBegin(Context * rsc, RsElement in, RsElement out, bool pointSpriteEnable)
|
||||||
{
|
{
|
||||||
delete rsc->mStateFragment.mPF;
|
delete rsc->mStateFragment.mPF;
|
||||||
rsc->mStateFragment.mPF = new ProgramFragment((Element *)in, (Element *)out);
|
rsc->mStateFragment.mPF = new ProgramFragment((Element *)in, (Element *)out, pointSpriteEnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rsi_ProgramFragmentBindTexture(Context *rsc, RsProgramFragment vpf, uint32_t slot, RsAllocation a)
|
void rsi_ProgramFragmentBindTexture(Context *rsc, RsProgramFragment vpf, uint32_t slot, RsAllocation a)
|
||||||
@@ -204,9 +205,10 @@ void rsi_ProgramFragmentBindSampler(Context *rsc, RsProgramFragment vpf, uint32_
|
|||||||
pf->bindSampler(slot, static_cast<Sampler *>(s));
|
pf->bindSampler(slot, static_cast<Sampler *>(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
void rsi_ProgramFragmentSetType(Context *rsc, uint32_t slot, RsType vt)
|
void rsi_ProgramFragmentSetSlot(Context *rsc, uint32_t slot, bool enable, RsTexEnvMode env, RsType vt)
|
||||||
{
|
{
|
||||||
const Type *t = static_cast<const Type *>(vt);
|
const Type *t = static_cast<const Type *>(vt);
|
||||||
|
if (t) {
|
||||||
uint32_t dim = 1;
|
uint32_t dim = 1;
|
||||||
if (t->getDimY()) {
|
if (t->getDimY()) {
|
||||||
dim ++;
|
dim ++;
|
||||||
@@ -214,17 +216,9 @@ void rsi_ProgramFragmentSetType(Context *rsc, uint32_t slot, RsType vt)
|
|||||||
dim ++;
|
dim ++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rsc->mStateFragment.mPF->setType(slot, t->getElement(), dim);
|
rsc->mStateFragment.mPF->setType(slot, t->getElement(), dim);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rsi_ProgramFragmentSetEnvMode(Context *rsc, uint32_t slot, RsTexEnvMode env)
|
|
||||||
{
|
|
||||||
rsc->mStateFragment.mPF->setEnvMode(slot, env);
|
rsc->mStateFragment.mPF->setEnvMode(slot, env);
|
||||||
}
|
|
||||||
|
|
||||||
void rsi_ProgramFragmentSetTexEnable(Context *rsc, uint32_t slot, bool enable)
|
|
||||||
{
|
|
||||||
rsc->mStateFragment.mPF->setTexEnable(slot, enable);
|
rsc->mStateFragment.mPF->setTexEnable(slot, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
ProgramFragment(Element *in, Element *out);
|
ProgramFragment(Element *in, Element *out, bool pointSpriteEnable);
|
||||||
virtual ~ProgramFragment();
|
virtual ~ProgramFragment();
|
||||||
|
|
||||||
virtual void setupGL(ProgramFragmentState *);
|
virtual void setupGL(ProgramFragmentState *);
|
||||||
@@ -64,6 +64,7 @@ protected:
|
|||||||
// Hacks to create a program for now
|
// Hacks to create a program for now
|
||||||
RsTexEnvMode mEnvModes[MAX_TEXTURE];
|
RsTexEnvMode mEnvModes[MAX_TEXTURE];
|
||||||
uint32_t mTextureEnableMask;
|
uint32_t mTextureEnableMask;
|
||||||
|
bool mPointSpriteEnable;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ProgramFragmentState
|
class ProgramFragmentState
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ RsSampler rsi_SamplerCreate(Context *rsc)
|
|||||||
ss->mWrapS,
|
ss->mWrapS,
|
||||||
ss->mWrapT,
|
ss->mWrapT,
|
||||||
ss->mWrapR);
|
ss->mWrapR);
|
||||||
|
s->incRef();
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -199,6 +199,7 @@ RsTriangleMesh rsi_TriangleMeshCreate(Context *rsc)
|
|||||||
memcpy(tm->mIndexData, tmc->mIndexData.array(), tm->mIndexDataSize);
|
memcpy(tm->mIndexData, tmc->mIndexData.array(), tm->mIndexDataSize);
|
||||||
tm->analyzeElement();
|
tm->analyzeElement();
|
||||||
|
|
||||||
|
tm->incRef();
|
||||||
return tm;
|
return tm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -230,6 +230,13 @@ void Type::makeGLComponents()
|
|||||||
mGL.mTex[texNum].size = 4;
|
mGL.mTex[texNum].size = 4;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Component::POINT_SIZE:
|
||||||
|
rsAssert(!mGL.mPointSize.size);
|
||||||
|
mGL.mPointSize.size = 1;
|
||||||
|
mGL.mPointSize.offset = mElement->getComponentOffsetBytes(ct);
|
||||||
|
mGL.mPointSize.type = c->getGLType();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -280,6 +287,13 @@ void Type::enableGLVertexBuffer() const
|
|||||||
}
|
}
|
||||||
glClientActiveTexture(GL_TEXTURE0);
|
glClientActiveTexture(GL_TEXTURE0);
|
||||||
|
|
||||||
|
if (mGL.mPointSize.size) {
|
||||||
|
glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
|
||||||
|
glPointSizePointerOES(mGL.mPointSize.type,
|
||||||
|
stride,
|
||||||
|
(void *)mGL.mPointSize.offset);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ protected:
|
|||||||
VertexComponent_t mNorm;
|
VertexComponent_t mNorm;
|
||||||
VertexComponent_t mColor;
|
VertexComponent_t mColor;
|
||||||
VertexComponent_t mTex[RS_MAX_TEXTURE];
|
VertexComponent_t mTex[RS_MAX_TEXTURE];
|
||||||
|
VertexComponent_t mPointSize;
|
||||||
};
|
};
|
||||||
GLState_t mGL;
|
GLState_t mGL;
|
||||||
void makeGLComponents();
|
void makeGLComponents();
|
||||||
|
|||||||
Reference in New Issue
Block a user